0

Facebookからいくつかのページを検索して、それらの写真をダウンロードしています。リストですぐに表示し、新しい画像をダウンロードするたびにアダプタを更新したいと思います。他の1つのアクティビティで同じメソッドを使用していて、それは機能しますが、ここではダイアログを使用しており、バックグラウンドで実行している場合でも、すべてが完了するまで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 に答える