android - 在 Android 上终止 Activity 不会清除内存?

标签 android memory android-activity bitmap

我有一个在 android 上运行的游戏。

基本上,它的结构就像lunarlander

我开始了我的 Activity ,使用布局开始运行类。

<?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 按钮时出现问题。

我想我的游戏结束了。但是经过4次“点击游戏”->“点击返回”

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

我已经覆盖了函数:onPause() 并调用了 finish()。但它仍然会发生。

谁能帮帮我?

最佳答案

我面临的问题是:

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

即使 Activity 被销毁,它也不会归还 Bitmap 使用的内存。

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

我从资源中解码出来的位图占满了我所有的内存。

最简单的修复方法:

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

由于android中存在清理Bitmap内存的bug。我们手动调用 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

关于android - 在 Android 上终止 Activity 不会清除内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4022815/

相关文章:

java - 通过类名动态实例化 Fragment

android - 在 Android 版本 4.2.2 中通话电话在 MODE_IN_CALL 中不起作用

android - 如何在运行时将主题设置为 Activity ?在 onCreate 和 setContentView 之前调用 setTheme 不起作用

c - 即使我释放了每个 malloc,动态结构数组和链表中的内存泄漏

android - 启动具有特定 Activity 的 Android 应用程序

java - 无法通过蓝牙进行调试

java - 将 InputStream 写入文件的内存友好方式

debugging - 在 node.js 应用程序中绘制内存使用情况的不同工具?

android - 如何从 OnActivityResult 更新 RecyclerView 元素

android - 从包含问号的 URL 启动应用程序