android官网demo之异步加载图片
16lz
2021-12-04
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,便可开始异步加载图片。
更多相关文章
- Android(安卓)APP增量升级及插件化实现方式
- [Android(安卓)UI] ActionBar 自定义属性
- Android(安卓)调用手机系统照相机拍照
- 关于Android(安卓)获得图片的总结
- Android(安卓)ERR_CLEARTEXT_NOT_PERMITTED
- android:installLocation简析
- Android(安卓)ImageView、TextureView、自定义View显示图片
- Android第一行代码(2版)——阅读笔记
- android 背景圆角以及图片圆角处理