0

膨大な時間がかかるさまざまなサーバー データを更新する必要があります。条件でデータを更新する必要があります。for ループを実行していると、デバイスが 1 分間停止します。ハンドラーを使用して他のオプションを実行したい (これは考えられません)。現在、私は次のようにしています:

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 に答える