2012-06-27 70 views
0

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

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

你确定你的循环? 'for(int i = 0; i> 10; i ++)'......这是正确的吗? –

回答

2

你可能想要的是AsyncTask。在你活动类添加

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构造。

0

您应该使用服务实现这些服务器数据,而不是在活动上发布任务。为此做一个自定义的服务,你将有自由活动来做任何事情。