开始新活动后清除背景

时间:2013-03-27 22:20:51

标签: android background resources

我遇到了内存不足的问题,因此我决定在开始新活动之前清理背景。

它有效,但我有一个不好的副作用,我在新活动开始前有黑屏。

这是我的代码:

我在这里设置:

@Override
protected void onResume() {
    super.onResume();

    bg.setBackgroundDrawable(new BitmapDrawable(decodeSampledBitmapFromResource(getResources(), R.drawable.bg, sizeWigth, sizeHeight)));

}

我在这里清楚:

@Override
protected void onPause() {
    super.onPause();
    bg.setBackgroundDrawable(null);
    System.gc();
}

您有什么想法解决它吗?

1 个答案:

答案 0 :(得分:1)

加载大图片时,请确保遵循以下规则

  1. 根据您的屏幕DPI加载图像。如果你的屏幕很小,他们没有理由将巨大的图像加载到内存中。

  2. 位图采样。阅读this以对大图像进行二次采样

  3. 监控HeapSize并在加载图像后有足够的空间进行其他处理。请查看此link

  4. 使用java引用加载图像。确保在图像为空时重新加载图像。这有助于您避免内存不足问题。

    的System.gc();

  5. 是对垃圾收集器的提示,并且他们无法保证垃圾收集器在执行此行后会收集垃圾。

    将此图像放在XML布局上对内存问题没有帮助。