当android_main()返回时,我是否必须释放我分配的内存?

时间:2017-01-05 03:15:09

标签: android memory-management android-ndk native-activity

我在c ++端使用NativeActivity和android_native_app_glue.c/h以及android_main函数。

我刚刚了解到,当应用程序被完全销毁(生成APP_CMD_DESTROY事件)时,应用程序的Linux进程仍未被销毁但仍在运行;而只是android_main()返回,并在应用重新启动时再次调用。

这有趣的效果是,即使应用程序被彻底销毁,也会有一些内存无法释放。例如,如果我在名为int test;的c ++代码中创建一个全局变量并为其设置值123,则下次创建应用程序时它仍然是相同的123

我认为我应该释放我在生成APP_CMD_DESTROY时分配的所有内存,并且android_main将返回。这个假设是真的吗?问题是:是否有一些关于内存可以留在内存中而不被释放的规则?千字节好吗? 500k好吗? 50 megs好吗? 400 megs好吗?

我的应用程序首先被销毁的原因是因为用户在另一个应用程序中执行某些操作然后将返回到我的应用程序,而另一个应用程序将告诉我的应用程序用户在另一个应用程序中执行的操作。如果我可以将所需的所有数据保存在内存中(通过全局变量),这将是最方便的,以便应用程序只知道在它被销毁后的继续。尽管我知道制作全局变量通常被认为是一个坏主意。

因此,绝对释放我已经分配的所有内存,或者我可以保留一点,或者我可以保持很多并相信Android操作系统将继续杀死实际的Linux进程是一个好主意在它真的想要摆脱分配的内存的情况下?因为如果我的应用程序在从其他应用程序恢复后重新启动非常快,我会很感激,并且它不需要在开始时加载一些资源。

0 个答案:

没有答案
相关问题