android官网提供了异步加载图片的策略,使用AsyncTask在后台线程处理图片,最后把后台的执行结果呈现到UI线程中。

主要代码如下

class BitmapWorkerTask extends AsyncTask {    private final WeakReference imageViewReference;    private int data = 0;    public BitmapWorkerTask(ImageView imageView) {        // Use a WeakReference to ensure the ImageView can be garbage collected        imageViewReference = new WeakReference(imageView);    }    // Decode image in background.    @Override    protected Bitmap doInBackground(Integer... params) {        data = params[0];        //图片操作,可以使网络加载,也可以是本地        //这里是加载大图为指定大小        return decodeSampledBitmapFromResource(getResources(), data, 100, 100));    }    // Once complete, see if ImageView is still around and set bitmap.    @Override    protected void onPostExecute(Bitmap bitmap) {        if (imageViewReference != null && bitmap != null) {            final ImageView imageView = imageViewReference.get();            if (imageView != null) {                imageView.setImageBitmap(bitmap);            }        }    }}

为imageview 使用weakreference 确保了AsyncTask所引用的资源可以被垃圾回收器回收,不懂弱引用的可以自行查询,这里的作用就是不会造成内存泄露。

启动上面的AsyncTask,便可开始异步加载图片。

更多相关文章

  1. Android(安卓)APP增量升级及插件化实现方式
  2. [Android(安卓)UI] ActionBar 自定义属性
  3. Android(安卓)调用手机系统照相机拍照
  4. 关于Android(安卓)获得图片的总结
  5. Android(安卓)ERR_CLEARTEXT_NOT_PERMITTED
  6. android:installLocation简析
  7. Android(安卓)ImageView、TextureView、自定义View显示图片
  8. Android第一行代码(2版)——阅读笔记
  9. android 背景圆角以及图片圆角处理

随机推荐

  1. Android(安卓)layout属性详细说明
  2. Android之碎片Fragment的生命周期
  3. 丧心病狂的Android混淆文件生成器
  4. Spreadtrum_Android_8805和8810环境搭建
  5. android的存储GreenDao数据库
  6. MediaBrowserService 音乐播放项目
  7. android shape的使用 自定义 控件形状
  8. Android(安卓)放大镜效果实现原理
  9. android设置中的Preferencescreen使用方
  10. Android(安卓)Jetpack架构组件-Paging介