Android LruCache in ListView

简介: package zhangphil.cache;import android.app.ListActivity;import android.
package zhangphil.cache;

import android.app.ListActivity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.os.Bundle;
import android.util.Log;
import android.util.LruCache;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;

public class MainActivity extends ListActivity {
    private LruCache<String, Bitmap> mLruCache;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        int CACHE_SIZE = 8 * 1024 * 1024;
        mLruCache = new LruCache(CACHE_SIZE);

        ArrayAdapter mAdapter = new ArrayAdapter(this, 0) {
            @NonNull
            @Override
            public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
                ImageView image = new ImageView(getContext());
                load(R.mipmap.ic_launcher, image);
                return image;
            }

            @Override
            public int getCount() {
                return 20;
            }
        };

        setListAdapter(mAdapter);
    }

    private void load(int id, ImageView image) {
        Bitmap bmp = mLruCache.get(String.valueOf(id));
        if (bmp == null) {
            Log.d("LruCache缓存", "没有缓存,开始创建新数据资源并缓存之。");
            bmp = BitmapFactory.decodeResource(getResources(), id);
            mLruCache.put(String.valueOf(id), bmp);
        } else {
            Log.d("LruCache缓存", "已有缓存,复用。");
            image.setImageBitmap(bmp);
        }
    }
}

相关文章
|
6天前
|
API Android开发 开发者
Android UI设计: 什么是RecyclerView?为什么它比ListView更好?
Android UI设计: 什么是RecyclerView?为什么它比ListView更好?
33 2
|
6天前
|
XML Java Android开发
如何美化android程序:自定义ListView背景
如何美化android程序:自定义ListView背景
|
6天前
|
XML Java Android开发
Android Studio App入门之列表视图ListView的讲解及实战(附源码 超详细必看)
Android Studio App入门之列表视图ListView的讲解及实战(附源码 超详细必看)
105 0
|
6天前
|
XML 编解码 Java
Android控件之高级控件——ListView、cardView、屏幕适配
Android控件之高级控件——ListView、cardView、屏幕适配
|
5月前
|
XML Android开发 数据格式
安卓-无敌解决ListView添加标题头无法正常显示的问题(歪门邪道)
安卓-无敌解决ListView添加标题头无法正常显示的问题(歪门邪道)
41 0
|
7月前
|
Java Android开发
[笔记]Android 学习一之转场动画+ViewPager+ListView简单Demo
[笔记]Android 学习一之转场动画+ViewPager+ListView简单Demo
|
XML Java Android开发
Android优化版ListView(附源代码)
本文是博主对Adapter(适配器)的一些理解,为了加深对Adapter的理解以及记录自己的阶段学习而写,同时也适合初学者阅读,参考本条博客的逻辑进行学习。
122 0
|
缓存 Java Android开发
Android使用LruCache、DiskLruCache实现图片缓存+图片瀑布流
**本文仅用于学习利用LruCache、DiskLruCache图片缓存策略、实现瀑布流和Matix查看大图缩放移动等功能,如果想用到项目中,建议用更成熟的框架,如[glide]
133 0
|
存储 缓存 算法
Android内存缓存LruCache源码解析
内存缓存,使用强引用方式缓存有限个数据,当缓存的某个数据被访问时,它就会被移动到队列的头部,当一个新数据要添加到LruCache而此时缓存大小要满时,队尾的数据就有可能会被垃圾回收器(GC)回收掉,LruCache使用的LRU(Least Recently Used)算法,即:<strong>把最近最少使用的数据从队列中移除,把内存分配给最新进入的数据。</strong>
|
Android开发
安卓中listview点击每一条进入不同界面
安卓中listview点击每一条进入不同界面
97 0