0
webservice.UpdateAllNews();

该功能是将在线数据库中的数据下载到本地数据库。

我想要的是我想在检测到功能已下载完成所有数据后启动下一个活动。

P/S 数据量大

这是我现在的情况

webservice.UpdateAllNews();
                int secondsDelayed = 17;
                new Handler().postDelayed(new Runnable() {
                    public void run() {
                        startActivity(new Intent(Main_Launcher.this,
                                Main_AllLatestNews.class));
                        finish();
                    }
                }, secondsDelayed * 1000);

这是另一个类函数

public void UpdateAllNews() {
    try {
        List<List_CategoryNews> newsCat = dbhelper.getAllNewsCategories();
        for (List_CategoryNews nwCat : newsCat) {

            int CatNewsID = nwCat.getCatID();

            if (CatNewsID != 0) {
                dbhelper.DeleteNews(CatNewsID);
                GetNews(CatNewsID, datetemp1, datetemp2);

            }

            String log = " NewsCatID- " + nwCat.getCatID()
                    + " category Name- " + nwCat.getNewCatName();
            System.out.println(log);
        }
    } catch (Exception ex) {
        AlertDialog.Builder b = new AlertDialog.Builder(mContext);
        b.setMessage(ex.toString());
        b.show();
    }
}

这个是在 17 秒后不断启动,我希望在完成从在线数据库下载数据后自动启动活动,而不是延迟 17 秒。

有什么建议吗?

4

2 回答 2

1

也许尝试使用 AsyncTask:

private class YourTask extends AsyncTask<String, Void, String> 
{
    @Override
    protected String doInBackground(String... urls) 
    {
         webservice.UpdateAllNews();
    }

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

以及如何运行它:

YourTask task = new YourTask();
task.execute("...");
于 2012-04-30T12:08:56.043 回答
0

为什么不使用像 Observer-Observable 这样的简单客户端-服务器方法?任务完成后,observable 将调用观察者的更新函数,这将是您的主要活动。

于 2012-05-01T07:25:43.660 回答