0

我正在从 facebook 搜索一些页面,然后下载他们的图片。我想在我的列表中立即查看它们,并在每次下载新图片时更新适配器。我在另一个活动中使用相同的方法并且它有效,但在这里我使用一个对话框,它冻结我的 UI 直到一切都完成,即使我在后台执行它。为什么?

private synchronized void getUserLikesImages() {AsyncTask<Void, Void, Bitmap> task = new AsyncTask<Void, Void, Bitmap>() {

        @Override
        public Bitmap doInBackground(Void... params) {
        for(...){
               //download one picture...
               FacebookeventsActivity.this.runOnUiThread(new Runnable() {
               public void run() {
                        pagesILikeArrayAdapter.notifyDataSetChanged();
               }
            });

        }
      };
   task.execute();
   }

它可以工作,但是 UI 一直冻结到操作结束...我认为这可能是因为我的列表在一个对话框中并且我在 UIThread 上运行它,但我不知道如何修复它。

4

1 回答 1

2
@Override
        public Bitmap doInBackground(Void... params) {
for(...){
//download one picture...

  }
 };


@Override
onPostExecute()
{
 pagesILikeArrayAdapter.notifyDataSetChanged();
}

只需onPostExecute()从中添加并通知适配器..或者只是添加onProgreesUpdate()方法并定期publishProgress()doInBackGround() 通知适配器中使用..

于 2012-06-20T11:47:51.970 回答