0

我在 Android 世界中相对较新,UI/Thread 模型仍然令人困惑。

这是我正在尝试做的事情:

从 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);
   }
  });

为此,我有一个线程和两个 runOnUiThread 调用。我觉得不必处理这些线程就可以有更好的解决方案。我对吗?

谢谢

4

1 回答 1

1

使用AsyncTask - 它是为这种场景创建的:运行后台任务或(长)进程,同时仍以正确的方式更新 UI(在 EDT 上)。

于 2010-11-05T16:49:00.077 回答