Android上的杀戮活动不会';你不能清除记忆吗?
我有一个在android上运行的游戏 基本上,它的结构就像lunarlander 我开始了我的活动,使用布局开始上课Android上的杀戮活动不会';你不能清除记忆吗?,android,memory,android-activity,bitmap,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_pare
<?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>
当我回到家,我可以回到我的游戏每次。我总是关闭线程并创建一个新线程
当我按下按钮时,问题出现了
我想我的比赛结束了。但经过4次“点击游戏”->“点击后退”
出现错误->“意外停止”
我重写了函数:onPause()
并调用了finish()
。但它仍然会发生
有人能帮我吗?我面临的问题是: 我在UIthread中分配了一些位图。如果按“后退”按钮,系统不会释放内存 即使活动被销毁,它也不会返回位图使用的内存 因此,当我试图通过在back和我的游戏之间来回按下来测试我的游戏时,VM由于缺少外部内存而关闭 我从资源中解码的位图已经填满了我的全部内存 最简单的修复方法是:
protected void onPause()
{
super.onPause();
System.gc();
}
由于android中存在清理位图内存的错误。我们手动调用GC来强制它清理位图。这是一只虫子
如果要立即释放位图,请使用Bitmap.recycle()
检查日志,查看引发了什么异常。这将帮助您找到实际问题。它说我的线程已成功终止,但我分配了太多内存,因此系统包含错误。但我不明白的是我按下了后退按钮,所以活动应该被终止,所有的内存应该被释放,不是吗??我没有覆盖任何方法!嗯,它说外部内存使用量太大了。。。看来我问错问题了,对不起。活动和线程都终止。但内存似乎没有释放。不知何故,当我返回到主活动时,按工具栏上的“后退”按钮,它会清理内存,而按“后退”按钮则不会。调用
System.gc()
确实解决了这个问题。