3

私はAndroidで何かに取り組んでいます。アクセスすると、メニューが表示され、サーバーからかなり大きなユーザー リスト (500 以上) が要求され、約 5 秒かかります。この間、アプリケーションはフリーズします。ユーザーが何かが起こっていることを認識し、それが完了するまでそれに触れることができないプログレス hud (MBProgressHud など) を表示するにはどうすればよいですか。

MBProgressHud:

HUD の例

4

2 に答える 2

6

AsyncTaskを使用します:

public class MyAsyncTask extends AsyncTask<Void, Void, Result>{

                        private Activity activity;
                        private ProgressDialog progressDialog;

            public MyAsyncTask(Activity activity) {
                            super();
                this.activity = activity;
            }

            @Override
            protected void onPreExecute() {
            super.onPreExecute();
                progressDialog = ProgressDialog.show(activity, "Loading", "Loading", true);
            }

            @Override
            protected Result doInBackground(Void... v) {
            //do your stuff here
            return null;

            }

            @Override
            protected void onPostExecute(Result result) {
                progressDialog.dismiss();
                Toast.makeText(activity.getApplicationContext(), "Finished.", 
                        Toast.LENGTH_LONG).show();
            }


}

アクティビティから呼び出します。

MyAsyncTask task = new AsyncTask(myActivity.this);
task.execute();
于 2012-08-16T14:36:01.913 に答える
0

この機能を使用AsyncTaskして実現する必要があります。ProgressDialog別のスレッドで重労働 (Web 呼び出し) をオフロードし、UI スレッドを ANR (アプリケーション応答なし) から解放します。

詳細については、この回答をお読みください。

于 2012-08-16T14:34:36.797 に答える