Articles of bitmap

避免从Android回收位图

我有两个asynchronous任务之一,其中一个下载图像,另一个添加模糊效果,但我的问题是,在onPostExecutecallback的下载任务我想把位图在一个ImageView中,然后传递给第二个任务运用模糊效果,但有时我得到 trying to use a recycled bitmap 我已经search了很多关于这个问题,但我没有find一个明确的解决scheme,以避免这个问题,特别是我使用这个图像在一个视图的分页器这是我的代码 protected void onPostExecute(Bitmap result) { Bitmap bitmap=result; bmImage.setImageBitmap(bitmap); if(bitmap!=null && !bitmap.isRecycled()){ Bitmap bb=bitmap; new blurTask().execute(bb);} } 这是我的完整的片段代码 public class ScreenSlidePageFragment extends Fragment { int page; String img; // ImageView blured; String[] checkblur; int size; Boolean onCreateViewCalled = false; ImageView blur; ImageView imageView; public static ScreenSlidePageFragment newInstance(int page, […]

如何将文件读入Java位图?

我知道如何将一个位图文件读入一个字节数组。 如何将字节数组转换为Java位图?

无知(可能的)Android内存泄漏

我一直在面对一些烦人的OutOfMemoryErrors ,即使在确保所有的Bitmaps都正确缩放之后。事实上,这个问题似乎并没有与Bitmaps有关,但我可能是错的。 出于testing和错误隔离的目的,我一直在使用我的导航抽屉(不使用后退button)在两个活动(让我们称之为Main和List)之间进行切换。 我可以在DDMS中看到每次返回时分配的内存增加了大约180 KB。 我已经做了内存转储,并使用eclipse MAT来分析3个不同的时间点: 我怀疑有内存泄漏,但是我无法find原因。 根据内存转储,它看起来是“剩余”和java.lang.FinalizerReference不断增加。 在这个问题中的用户在他的内存转储中也有很多FinalizerReferences ,但答案不是很清楚。 我在最后一个时间点所做的泄漏嫌疑人报告并不是很有帮助,因为它怀疑android.content.res.Resources和android.graphics.Bitmap似乎不会随着时间的推移而增长: 在其中一个报告(可惜,​​这里不存在),我已经看到13个android.widget.ListView实例指出潜在的泄漏嫌疑人。 这些内存增加发生在任何活动之间的转换(不仅仅是本例中使用的Main和List I)。 我怎样才能find(非明显的)内存泄漏? 我一直在挠头,所以任何帮助和提示都会很棒。 编辑: 位图(@ OrhanC1):我已经评论过上述两个活动中的任何Bitmap实例,并且内存仍然增加。 内存转储仍然显示一些位图,但我相信它们与资源相关,而不是我分配的实际位图。 关于自定义字体(@erakitin):我正在使用它们,但是我使用单例在我的Application上下文( public class MyApp extends Application )中保留每个Typeface的单个实例。 我已经尝试过在上述两个活动中对字体的引用进行评论,并且内存仍然增加。 我不认为我正在泄漏Context (@DigCamara):我没有在这两个活动中持有任何静态引用,我使用Application上下文,而不是除了在一个适配器的Activity 。 如果我留在同一个Activity并做一些屏幕旋转,内存不会增加。 基于@ NickT的评论:我可以看到我有两个活动的许多实例。 这些内存增加是否仅仅是后端堆栈活动数量增加的结果,而不是内存泄漏 (我虽然操作系统处理了, 显然不是 )? 如果我使用FLAG_ACTIVITY_REORDER_TO_FRONT意图标志,那么内存只会增加,直到所有不同的活动都被实例化(一次)。 对于这个问题很有用: Android在内存不足时不会从堆栈中查杀活动 。