相关疑难解决方法(0)

Android中的位图

我有一些关于Bitmap对象和内存及其一般分类的问题.

  1. 什么是内存或本机位图?
  2. Bitmap内存与堆内存有何不同?

android bitmap

29
推荐指数
3
解决办法
3万
查看次数

尝试将带有图像的表单发送到PHP服务器时Android中的内存泄漏

我在这个文件中有内存泄漏,我找不到确切的位置,但我认为是周围的图像 - > (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)

android memory-leaks bitmap android-asynctask

8
推荐指数
1
解决办法
1385
查看次数

异步下载适配器中的位图,重点介绍Bitmap.recycle()

有人能告诉我如何为异步制作一个好的机制.下载用于ListView/GridView的图像?有许多建议,但每个只考虑典型要求的一小部分.

下面我列出了一些合理的因素(要求或要考虑的因素),我和我的同事们不能立刻满足.
我不是要求代码(虽然它是受欢迎的),只是一种管理所描述的位图的方法.

  1. 没有重复的下载程序或位图
  2. 取消下载/分配不再需要或可能自动删除的图像(SoftReference等)
  3. 注意:适配器可以有多个视图用于相同的ID(对getView(0)的调用非常频繁)
  4. 注意:无法保证视图不会丢失而不是回收(考虑List/GridView调整大小或按文本过滤)
  5. 视图和数据/逻辑的分离(尽可能多)
  6. 不为每次下载启动单独的线程(UI的可见减速).使用队列/堆栈(BlockingQueue?)和线程池,或某些....但需要结束,如果活动停止.
  7. 清除位图与列表/网格中的当前位置相距足够远,优选仅在需要存储器时
  8. 在要丢弃的每个Bitmap上调用recycle().
  9. 注意:外部存储器可能无法使用(无论是在任何时候还是在所有时间),如果使用的话,应该尽快清除(仅限于此处下载的图像)(考虑Android的Activity destroy/recreation)
  10. 注意:可以更改数据:删除条目(多选和删除)并添加(在后台线程中).已经下载的位图应该保留,只要它们链接的条目仍然存在.
  11. setTextFilterEnabled(true)(如果基于ArrayAdapter的机制,将影响数组索引)
  12. 可用于ExpandableList(影响缩略图的显示顺序)
  13. (可选)下载Bitmap时,只刷新相关的ImageView(列表项可能非常复杂)

请不要发布个别积分的答案.我的问题是,我们越是专注于某些方面,其他人就越模糊,海森堡就像.
每个都增加了难度维度,特别是Bitmap.recycle,需要在操作和Activity销毁期间调用(请注意onDestroy,甚至onStop可能不会被调用).
这也排除了依赖SoftReferences.
这是必要的,或者我甚至在使用任何数量的gc,sleep(20s,偶数),在try-catch(以强制受控的OutOfMemory)之后产生和大量数组分配后得到OutOfMemoryError.
我已经重新采样了Bitmaps.

android lazy-loading bitmap adapter recycle

7
推荐指数
1
解决办法
1501
查看次数

OutOfMemoryError虽然vm有足够的可用内存

我得到这个奇怪的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)

android android-memory

7
推荐指数
1
解决办法
3101
查看次数