在我的應用程序中,我有一個ImageView
。在添加之前,該應用程序執行順利。現在它拋出ANR。Android圖像視圖使應用程序變得緩慢
圖像被保存在數據庫中作爲底座64的編碼串和它被解碼爲位圖,並使用加載到ImageView的:
imageView.setImageBitmap(bitmap);
的bitmap
轉化率和施加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);
}
}
}
}
的AsyncTask
從使用下面的代碼在主UI調用:
BitmapWorkerTask task = new BitmapWorkerTask(pollWebView,decodedStrings[1]);
task.execute();
decodedStrings [1]包含base64編碼圖像dataUrl。
此問題的任何解決方案?
位圖的大小是多少? – greenapps
它可以從10 kb到10 MB不等 – Jyothish