0

这是我的 asynctask 类........

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是一个异步任务。在您的 run() 中,您启动了任务,但随后立即启动了另一个活动,但没有完成任务。最有可能的是,android 移动到Main_FormNewUserActivity,但任务仍在后台运行。因此,您的第二次运行很可能实际上是第一次运行的结果。

如果您需要下一个活动出现您抓取新闻之后,您应该将您的startActivity语句移动到onPostExecute()异步任务中。

于 2012-05-02T05:33:48.957 回答
0

查看您的代码后,我认为 xandy 是正确的。Main_FormNewUser Activity 与异步任务并行执行。

于 2012-05-02T05:40:54.190 回答