
在我的应用程序中,我有一个ImageVIEw.在添加该ImageVIEw之前,该应用程序运行平稳.现在它会抛出ANR.
图像以base 64编码字符串形式保存在数据库中,并使用以下代码解码为位图并加载到imagevIEw中:
imageVIEw.setimageBitmap(bitmap);位图的转换以及将位图应用于ImageVIEw的所有这些 *** 作都是在AsyncTask中完成的:
class BitmapWorkerTask extends AsyncTask<Integer, VoID, Bitmap> { private final WeakReference<ImageVIEw> imageVIEwReference; private String data = ""; public BitmapWorkerTask(ImageVIEw imageVIEw, String data) { imageVIEwReference = new WeakReference<ImageVIEw>(imageVIEw); this.data = data; } @OverrIDe protected Bitmap doInBackground(Integer... params) { byte[] decodedString = Base64.decode(data, Base64.DEFAulT); BitmapFactory.Options options=new BitmapFactory.Options(); options.inPurgeable = true; Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length, options); return decodedByte; } @OverrIDe protected voID onPostExecute(Bitmap bitmap) { if (imageVIEwReference != null && bitmap != null) { final ImageVIEw imageVIEw = imageVIEwReference.get(); if (imageVIEw != null) { imageVIEw.setimageBitmap(bitmap); } } }}使用以下代码从主ui调用AsyncTask:
BitmapWorkerTask task = new BitmapWorkerTask(pollWebVIEw,decodedStrings[1]); task.execute();encodedStrings [1]包含base64编码的图像dataUrl.
这个问题有什么解决办法吗?
解决方法:
让您的应用变慢的主要问题是WeakReference删除它,然后尝试
不要用这个
private final WeakReference<ImageVIEw> imageVIEwReference;只是使用
private final ImageVIEw imageVIEwReference; 总结 以上是内存溢出为你收集整理的Android图片视图会使应用变慢全部内容,希望文章能够帮你解决Android图片视图会使应用变慢所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)