我有一些关于Bitmap对象和内存及其一般分类的问题.
我在这个文件中有内存泄漏,我找不到确切的位置,但我认为是周围的图像 - > (Bitmap bm = BitmapFactory.decodeFile(filename)),我尝试了很多不同的方法,但我无法让它工作.
package prod.vegs;
//All imports here but not need to write them all now :-)
public class ProductForm extends Activity {
private static int TAKE_PICTURE = 1;
private static int SELECT_PICTURE = 2;
//JSON Response node names
private static String KEY_SUCCESS = "success";
private static String ERROR_MSG = "error_msg";
private static String KEY_TYPES = "subtypes";
private static String TYPE_NAME = "name";
private static String TYPE_ID = "id_type";
private static String PRODUCT_ID = "id_product"; …Run Code Online (Sandbox Code Playgroud) 有人能告诉我如何为异步制作一个好的机制.下载用于ListView/GridView的图像?有许多建议,但每个只考虑典型要求的一小部分.
下面我列出了一些合理的因素(要求或要考虑的因素),我和我的同事们不能立刻满足.
我不是要求代码(虽然它是受欢迎的),只是一种管理所描述的位图的方法.
请不要发布个别积分的答案.我的问题是,我们越是专注于某些方面,其他人就越模糊,海森堡就像.
每个都增加了难度维度,特别是Bitmap.recycle,需要在操作和Activity销毁期间调用(请注意onDestroy,甚至onStop可能不会被调用).
这也排除了依赖SoftReferences.
这是必要的,或者我甚至在使用任何数量的gc,sleep(20s,偶数),在try-catch(以强制受控的OutOfMemory)之后产生和大量数组分配后得到OutOfMemoryError.
我已经重新采样了Bitmaps.
我得到这个奇怪的OutOfMemoryError,虽然dalvikvm报告了足够的堆空间.日志:
12-09 14:16:05.527: D/dalvikvm(10040): GC_FOR_ALLOC freed 551K, 21% free 38000K/47687K, paused 173ms, total 173ms
12-09 14:16:05.527: I/dalvikvm-heap(10040): Grow heap (frag case) to 38.369MB for 858416-byte allocation
12-09 14:16:05.699: D/dalvikvm(10040): GC_FOR_ALLOC freed 6K, 21% free 38832K/48583K, paused 169ms, total 169ms
12-09 14:16:05.894: D/dalvikvm(10040): GC_FOR_ALLOC freed 103K, 20% free 38929K/48583K, paused 169ms, total 169ms
12-09 14:16:05.894: I/dalvikvm-heap(10040): Forcing collection of SoftReferences for 858416-byte allocation
12-09 14:16:06.074: D/dalvikvm(10040): GC_BEFORE_OOM freed 6K, 20% free 38922K/48583K, paused 182ms, total 182ms
12-09 14:16:06.074: E/dalvikvm-heap(10040): Out of …Run Code Online (Sandbox Code Playgroud)