Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android上的杀戮活动不会';你不能清除记忆吗?_Android_Memory_Android Activity_Bitmap - Fatal编程技术网

Android上的杀戮活动不会';你不能清除记忆吗?

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

我有一个在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>

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

当我按下按钮时,问题出现了

我想我的比赛结束了。但经过4次“点击游戏”->“点击后退”

出现错误->“意外停止”

我重写了函数:
onPause()
并调用了
finish()
。但它仍然会发生


有人能帮我吗?

我面临的问题是:

我在UIthread中分配了一些位图。如果按“后退”按钮,系统不会释放内存

即使活动被销毁,它也不会返回位图使用的内存

因此,当我试图通过在back和我的游戏之间来回按下来测试我的游戏时,VM由于缺少外部内存而关闭

我从资源中解码的位图已经填满了我的全部内存

最简单的修复方法是:

protected void onPause()
{
    super.onPause();
    System.gc();
}
由于android中存在清理位图内存的错误。我们手动调用GC来强制它清理位图。这是一只虫子

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


检查日志,查看引发了什么异常。这将帮助您找到实际问题。它说我的线程已成功终止,但我分配了太多内存,因此系统包含错误。但我不明白的是我按下了后退按钮,所以活动应该被终止,所有的内存应该被释放,不是吗??我没有覆盖任何方法!嗯,它说外部内存使用量太大了。。。看来我问错问题了,对不起。活动和线程都终止。但内存似乎没有释放。不知何故,当我返回到主活动时,按工具栏上的“后退”按钮,它会清理内存,而按“后退”按钮则不会。调用
System.gc()
确实解决了这个问题。