3
我正在嘗試創建包含視頻縮略圖的視頻詳細信息的ListView。嘗試創建視頻縮略圖時的OutOfMemory
在適配器的getView方法我調用
new ThumbnailCreatorTask(videoThumbnail).execute(path) for every row
這是ThumbnailCreatorTask:
private class ThumbnailCreatorTask extends AsyncTask<String, Void, Bitmap>{
private final WeakReference<ImageView> imageViewReference;
public ThumbnailCreatorTask(ImageView imageView){
imageViewReference = new WeakReference<ImageView>(imageView);
}
@Override
protected Bitmap doInBackground(String... params) {
return ThumbnailUtils.createVideoThumbnail(params[0], Thumbnails.MICRO_KIND);
}
@Override
protected void onPostExecute(Bitmap bitmap) {
if (imageViewReference != null && bitmap != null) {
ImageView imageView = imageViewReference.get();
imageView.setImageBitmap(bitmap);
}
}
}
創造了一些行,我收到了以下崩潰後:
07-16 16:26:30.060: E/dalvikvm-heap(17318): 1843200-byte external allocation too large for this process.
07-16 16:26:30.060: E/GraphicsJNI(17318): VM won't let us allocate 1843200 bytes
07-16 16:26:30.190: E/ThumbnailUtils(17318): Got OOM error
07-16 16:26:30.190: E/ThumbnailUtils(17318): java.lang.OutOfMemoryError: bitmap size exceeds VM budget
07-16 16:26:30.190: E/ThumbnailUtils(17318): at android.graphics.Bitmap.nativeCreate(Native Method)
07-16 16:26:30.190: E/ThumbnailUtils(17318): at android.graphics.Bitmap.createBitmap(Bitmap.java:477)
07-16 16:26:30.190: E/ThumbnailUtils(17318): at android.graphics.Bitmap.createBitmap(Bitmap.java:432)
07-16 16:26:30.190: E/ThumbnailUtils(17318): at android.media.MediaMetadataRetriever._getFrameAtTime(Native Method)
07-16 16:26:30.190: E/ThumbnailUtils(17318): at android.media.MediaMetadataRetriever.getFrameAtTime(MediaMetadataRetriever.java:201)
07-16 16:26:30.190: E/ThumbnailUtils(17318): at android.media.MediaMetadataRetriever.getFrameAtTime(MediaMetadataRetriever.java:225)
07-16 16:26:30.190: E/ThumbnailUtils(17318): at android.media.ThumbnailUtils.createVideoThumbnail(ThumbnailUtils.java:155)
正如我認爲我的做法是完全錯誤的。應如何處理我的情況下創建的縮略圖?
確實在UI線程此代碼運行..? – Mariusz
不,絕對不是。它應該被插入到你的doInBackground函數中。它還將位圖寫入可用於緩存處理的文件。 – Gomoku7