0

私は Android の世界では比較的新しく、UI/スレッド モデルはまだ混乱しています。

これが私がやろうとしていることです:

Web からデータを読み込む それらを処理する それらを表示する 問題がある場合は AlertDialog を表示する

私は現在このようにやっていますが、そのように多くのスレッドを使用することが最善の方法であるかどうかはわかりません。

onCreate() の内部

  final ProgressDialog pd = ProgressDialog.show(this, "", loadingText, true);
  final AlertDialog.Builder b = new AlertDialog.Builder(this);

  new Thread(new Runnable() {

   @Override
   public void run() {
    try {
     loadResorts();
    } catch (ResortsRetrievalException e) {
     runOnUiThread(new Runnable() {
      @Override
      public void run() {
       b.setMessage(R.string.resorts_retrieval_error)
       .show();
      }
     });
    }
    pd.dismiss();
   }
  }).start();

そして、私の loadResorts メソッドは次のように終了します

  final BaseAdapter a = new ResortAdapter(this, R.layout.resort_item, resorts);

  runOnUiThread(new Runnable() {
   @Override
   public void run() {
    resortsList.setAdapter(a);
   }
  });

そのために、1 つの Thread と 2 つの runOnUiThread の呼び出しがあります。これらのスレッドに対処しなくても、より良い解決策があると思います。私は正しいですか?

ありがとう

4

1 に答える 1

1

AsyncTaskを使用します。これは、バックグラウンド タスクまたは (長い) プロセスを実行しながら、正しい方法で (EDT で) UI を更新するという、この種のシナリオ用に作成されました。

于 2010-11-05T16:49:00.077 に答える