Android ListView非同期ローディングを実現する方法(改良版)
本明細書の例は、AndroidがListView非同期ローディングを実現する方法を説明する。皆さんに参考にしてあげます。具体的には以下の通りです。
その後,この方法は停止せずに新しいスレッドを開くことができ,効率はそれほど高くないことが分かった。最後にバックグラウンドスレッドを追加するようにしました。後から先にキューからタスクを取り出して処理します。
Android関連の内容についてもっと興味がある読者は、当駅のテーマを調べてもいいです。「AndroidビューViewテクニックのまとめ」、「Androidプログラミングのactivity操作技術のまとめ」、「Android操作SQLiteデータベース技術まとめ」、「Android操作json形式データ技術のまとめ」、「Androidデータベース操作技術のまとめ」、「Androidファイルの操作テクニックのまとめ」、「Androidプログラミング開発のSDカード操作方法のまとめ」、「Android開発入門と上級教程」、「Android資源操作技術のまとめ」、「Androidコントロールの使い方のまとめ」
ここで述べたように、皆さんのAndroidプログラムの設計に役に立ちます。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
…………
ViewHolder VH = null;
…………
VH.mImageView.setTag(position);
VH.mThumb.setImageDrawable(imageLoader.loadDrawable(position,
new ImageCallback() {
public void imageLoaded(Drawable imageDrawable, int position) {
ImageView imageViewByTag = (ImageView) mList.findViewWithTag(position);
if (imageViewByTag != null) {
imageViewByTag.setImageDrawable(imageDrawable);
}
}
}));
}
private static LruCache<Long, Drawable> mCache = new LruCache<Long, Drawable>(100);
public class AsyncImageLoader {
public Drawable loadDrawable(final int position, final ImageCallback callback){
Drawable d = null;
d = mCache.get(position);
if (d == null) {
final Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
callback.imageLoaded((Drawable) msg.obj, position);
}
};
Thread t = new Thread(){
public void run() {
Drawable drawable = Utils.getDrawable(mContext, position, 1, mMyDefaultIcon);
Drawable value = mCache.get(position);//cache ,
if (value == null) {
mCache.put(position, drawable);
} else {
drawable = value;
}
handler.sendMessage(handler.obtainMessage(0,drawable));
};
};
t.setPriority(Thread.MIN_PRIORITY);
t.start();
return mMyDefaultIcon;
} else {
return d;
}
}
}
public interface ImageCallback{
public void imageLoaded(Drawable imageDrawable, int position);
}
これは前のhttps://www.jb51.net/article/90408.htmに基づいて修正されました。主にLruCacheに参加するためにその後,この方法は停止せずに新しいスレッドを開くことができ,効率はそれほど高くないことが分かった。最後にバックグラウンドスレッドを追加するようにしました。後から先にキューからタスクを取り出して処理します。
Android関連の内容についてもっと興味がある読者は、当駅のテーマを調べてもいいです。「AndroidビューViewテクニックのまとめ」、「Androidプログラミングのactivity操作技術のまとめ」、「Android操作SQLiteデータベース技術まとめ」、「Android操作json形式データ技術のまとめ」、「Androidデータベース操作技術のまとめ」、「Androidファイルの操作テクニックのまとめ」、「Androidプログラミング開発のSDカード操作方法のまとめ」、「Android開発入門と上級教程」、「Android資源操作技術のまとめ」、「Androidコントロールの使い方のまとめ」
ここで述べたように、皆さんのAndroidプログラムの設計に役に立ちます。