我正在从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上运行它,但我不知道如何修复它
答案 0 :(得分:2)
@Override
public Bitmap doInBackground(Void... params) {
for(...){
//download one picture...
}
};
@Override
onPostExecute()
{
pagesILikeArrayAdapter.notifyDataSetChanged();
}
只需添加onPostExecute()
并通知适配器..或者只是添加onProgreesUpdate()
方法并使用publishProgress()
中的doInBackGround()
定期通知适配器..