Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 循环中的处理程序_Android_For Loop_Handler - Fatal编程技术网

Android 循环中的处理程序

Android 循环中的处理程序,android,for-loop,handler,Android,For Loop,Handler,我必须更新不同的服务器数据,这需要花费大量的时间。我必须更新有关条件的数据。当我运行循环时,它被设备卡住了一分钟。我想通过handler-else做任何其他选择(我想不出来)。目前我的工作是: 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) han

我必须更新不同的服务器数据,这需要花费大量的时间。我必须更新有关条件的数据。当我运行循环时,它被设备卡住了一分钟。我想通过handler-else做任何其他选择(我想不出来)。目前我的工作是:

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正在加载数据。。。
请帮忙。谢谢

您应该使用服务来实现这些服务器数据,而不是在活动上发布任务。为此定制一个自定义服务,您的活动就可以自由进行任何操作。

您可能需要的是
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();
    }
}
阅读更多关于


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

您确定您的for循环吗<代码>用于(int i=0;i>10;i++)…是否正确?
new UpdateServerTask().execute(null);