这是展示内容的最佳方式吗?

时间:2010-11-05 16:36:28

标签: android post runnable

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

以下是我要做的事情:

从网络加载数据 处理它们 让他们看 如果出现问题,请显示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);
   }
  });

我有一个Thread和两个runOnUiThread调用。我觉得有一个更好的解决方案,而不必处理这些线程。我是对的吗?

由于

1 个答案:

答案 0 :(得分:1)

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