我有一个应用程序,我下载了很多小图像并将它们保存到SD卡。这些文件大多数都很小(大约100kb),并且正在保存到SD卡中。问题是,即使我将largeHeap设置为true,我也会遇到很多OutOfMemory错误。我尝试使用Threads来执行此操作,它似乎没有保存我拥有的所有文件,它跳过大约10%的文件(350个文件中的30个未保存)。解决这个问题的最佳方法是什么?我也愿意使用JNI。
答案 0 :(得分:0)
您可以尝试的一件事是在完成位图后使用Bitmap.Recycle()来帮助GC清理对象(如果您还没有这样做)。这很可能会有所帮助,但却无法解决问题。
另一件事是如果你使用线程(AsyncTask是一个更好的选择),你管理并发线程的数量?例如,设置最大下载次数,并且在并发下载次数小于MAX之前不要开始新的下载。
这里有一个很好的方法来下载列表视图的图片,它可能会带给你一些想法。 http://developer.android.com/training/displaying-bitmaps/process-bitmap.html