0

我有一个基于 URL 获取 favicon 的 AsyncTask。我正在创建一个 listView,它有一个 favicon 和一个 URL。目前,即使我有 AsyncTask,我的 UI 也会等待 asyncTask 完成,然后再显示下一个活动。

我希望我的活动以存储在可绘制对象中的默认图像开始,并且 AsyncTask 将在获得每个 favicon 后替换图像。

任何想法如何做到这一点?

我的异步任务:

private class DownloadImageTask extends AsyncTask<URL, Void, Bitmap> {
    final AccountListModel model = new AccountListModel(daoSession);

protected Bitmap doInBackground(URL... urls) {
    URL urldisplay = urls[0];
    Bitmap mIcon11 = null;
    try {
        mIcon11 = model.getBitmapFromURL(urldisplay);
        //try to get image
    } catch (Exception e) {
        Log.e("Error", e.getMessage());
        e.printStackTrace();
    }
    return mIcon11;
}

protected void onPostExecute(Bitmap result) {
    faviconBitmap=result;
}}

我目前创建列表视图的方式

for (Site site : model.getSites()) {
    try {
    String url = site.getDomain()
    faviconBitmap= new DownloadImageTask().execute(new URL("http", "www."+ url.trim(),"/favicon.ico")).get();
    if (faviconBitmap != null) {
       Bitmap scaled = Bitmap.createScaledBitmap(faviconBitmap,32, 32, true);
       accountsAndUsersList.add(newAccountListScreen(scaled,site.getName());

                    }
                }

    else {
            Bitmap icon = BitmapFactory.decodeResource(getResources(),R.drawable.favicon);
        Bitmap scaled = Bitmap.createScaledBitmap(icon, 32, 32, true);
        accountsAndUsersList.add(new AccountListScreen(scaled,site.getName());
                    }           
                }
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
         sitesToSortArray = new AccountListScreen[accountsAndUsersList
                .size()];
        accountsAndUsersList.toArray(sitesToSortArray);
        AccountListAdapter adapter = new AccountListAdapter(this,
                R.layout.account_list_row, sitesToSortArray);
        listViewAccountList = (ListView) findViewById(R.id.activityAccountList);
        listViewAccountList.setAdapter(adapter);

如果您也想看看我的适配器,请告诉我。谢谢!

4

0 回答 0