在Android上查杀活动并没有清除内存?

时间:2010-10-26 10:33:26

标签: android memory android-activity bitmap

我在Android上运行游戏。

基本上,它的结构就像是lunarlander

我开始了我的活动,使用布局开始上课。

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent">

 <my.darling.gameView
    android:layout_width="match_parent" 
    android:layout_height="match_parent"/>

</FrameLayout>

当我回家时,我可以每次都回到我的游戏中。我总是关闭线程并创建一个新线程。

按下BACK botton时出现问题。

我认为我的比赛结束了。但经过4次“点击游戏” - &gt; “点击返回”

出现错误 - &gt; “意外停止了”

我重写了这个功能:onPause()并调用finish()。但它仍然会发生。

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:4)

我面临的问题是:

我在UIthread中分配了一些Bitmaps。如果按BACK按钮,系统不会释放内存。

即使活动被破坏,它也不会返回Bitmap使用的内存。

所以当我尝试在BACK和我的游戏之间来回按下来测试我的游戏时,由于缺少外部存储器,VM会关闭。

我从资源中解码的位图填满了我的所有记忆。

解决问题的最简单方法:

protected void onPause()
{
    super.onPause();
    System.gc();
}

因为在android中存在清理Bitmap内存的错误。我们手动调用GC强制它清理我们的位图。这是一个错误。

如果您想立即释放位图,请使用Bitmap.recycle()

http://mobi-solutions.blogspot.com/2010/08/how-to-if-you-want-to-create-and.html

http://code.google.com/p/android/issues/detail?id=8488