我从活动A到B创建一个实例,然后在活动B中创建另一个活动实例A(我想在历史中保留前一个A)。我一直在创建实例,我有一个来自活动A的历史堆栈 - > B - > A - > B - >一个.....并且在20次之后,系统看起来需要更多的内存并将杀死第一个活动A,然后B(它从Log调用onDestroy())...每次创建每个活动时。在这种情况下,我从来没有任何内存问题。但是如果我突然创建一个活动C,它有很多需要大内存的图像,它会抛出一个Out of Memory错误:VM不会让我们像这样分配70k字节。
所以任何人都知道系统什么时候会杀死一个活动?每次只杀一次活动吗?在开始活动C之前,如何让系统给我更多内存?我有内存泄漏吗?任何帮助表示赞赏。
答案 0 :(得分:1)
除非要求内存,否则Android不会杀死活动。他们只是停留在记忆中,暂停了。如果您从活动A切换到B并返回,Android只是更改哪个是可见的和onResume()d - 它们没有被杀死(在Android活动堆栈上阅读更多关于此搜索)。活动C上的内存错误可能完全是C中的问题。根据您的情况,可能很容易更改AndroidManifest只是为了直接测试启动C ...您可能会得到相同的结果。 FYI ..调用finish()手动退出Activity并释放资源。