0

我必须更新需要大量时间的不同服务器数据。我必须根据条件更新数据。当我运行 for 循环时,它会卡住设备一分钟。我想通过处理程序来做其他任何其他选项(我想不出)。目前我正在做:

for(int i=0;i>10;i++)
{
if(i==0)
handler.post(runable-1);//Different server data
if(i==1)
handler.post(runable-2);//different server data
if(i==2)
handler.post(runable-3);//different server data
...
}

我该怎么办?另外我必须向用户展示哪个可运行正在加载数据......请帮助。谢谢

4

2 回答 2

2

你可能想要的是AsyncTask. 在您的 Activity 类中添加

class UpdateServerTask extends AsyncTask<Void, Void, Void> {
    private Object obj = null;
    private ProgressDialog dlg;

    @Override
    protected voide onPreExecute() {
        dlg = ProgressDialog.show (MyActivity.this, "", "Please wait, updating server...", true, false);     
    }

    @Override
    protected Void doInBackground(Void... params) {
        for(int i=0; i<10; i++) {
            switch(i) {
                case 0: ...;
                        break;
                case 1: ...;
                        break;
                ...
            }
        }
    }

    protected void onPostExecute(Void result) {

        dlg.dismiss();
    }
}

然后,当您需要进行更新时:

new UpdateServerTask().execute(null);

阅读更多关于AsyncTask的内容。

另外,请注意,您的for循环不正确,它应该是<10而不是>10. 最后,我建议您使用switch案例而不是if-else if-else构造。

于 2012-06-27T08:23:05.913 回答
0

您应该使用服务来实现这些服务器数据,而不是在活动中发布任务。为此制作自定义服务,您将可以自由地做任何事情。

于 2012-06-27T08:20:20.997 回答