我必须更新不同的服务器数据,这需要花费大量时间。我必须更新条件数据。当我运行循环时,它会让设备停留一分钟。我想通过处理程序做任何其他选项(我无法想到)。目前我正在做:
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
...
}
我该怎么办?此外,我必须向用户显示哪个runnable正在加载数据... 请帮忙。感谢
答案 0 :(得分: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
构建。
答案 1 :(得分:0)
您应该使用服务实现这些服务器数据,而不是在活动上发布任务。为此制作定制服务,您可以自由地开展活动。