0

これは私の非同期タスククラスです...................。

public class  UpdatingNews extends AsyncTask<String, Void, String> {
    private Database_WebService webservice;
    private Context mContext;

    public UpdatingNews(Context context){
        this.mContext = context;

    }

    @Override
    protected String doInBackground(String... params) {
        webservice = new Database_WebService(mContext);
        webservice.updateallCatNews();
        webservice.UpdateAllNews();
        return null;
    }

    @Override
    protected void onPostExecute(String result) {
        startActivity(new Intent(Main_Launcher.this,
                Main_FormNewUser.class));
        finish();
    }
}

私がそれを呼ぶとき..................

update = new UpdatingNews(this);
    check = webservice.CheckSurveySubmit();
    int secondsDelayed = 3;
    new Handler().postDelayed(new Runnable() {
        public void run() {
            if (check == 0) {
                update.execute("...");



            }
            if (check == 1) {
                startActivity(new Intent(Main_Launcher.this,
                        Main_AllLatestNews.class));
                finish();
            }
        }
    }, secondsDelayed * 1000);

実行されませんでした.............................。

webservice.updateallCatNews();
        webservice.UpdateAllNews();

そこの問題は何ですか????????????????????????????

4

2 に答える 2

0

あなたUpdatingNewsはAsyncTaskです。run()でタスクを開始しましたが、タスクを終了せずにすぐに別のアクティビティを開始します。おそらく、AndroidはMain_FormNewUserActivityに移行しますが、タスクはまだバックグラウンドで実行されています。したがって、2回目の実行で、実際に1回目の実行の結果が得られている可能性が非常に高くなります。

次のアクティビティが表示される必要がある場合は、ニュースを取得したstartActivity、ステートメントをonPostExecute()asynctaskに移動する必要があります。

于 2012-05-02T05:33:48.957 に答える
0

あなたのコードを見た後、私は xandy が正しいと思います。Main_FormNewUser アクティビティは、非同期タスクと並行して実行されています。

于 2012-05-02T05:40:54.190 に答える