1

现在,我知道在 Android 中没有“退出”应用程序这样的事情。我的意思是,即使在该应用程序中的所有活动都被销毁之后,与应用程序对应的进程也会保留在内存中。(为简单起见,让我们将服务等排除在外)。只有当系统决定这样做以回收内存时,该进程才会被终止。

但是,一旦我的所有活动都被销毁,我会假设与我的应用程序对应的进程不再“活动”。我的意思是,由于我的应用程序没有做任何工作,我假设该过程不再执行分配。这个假设正确吗?

我使用了 Eclipse ADT 通过 Eclipse ADT 提供给我的简单默认HelloWorld示例,New Android Project Wizard发现情况并非如此。即使在我关闭应用程序后,我仍然可以在 DDMS 中跟踪分配情况。谁能解释这个原因?

4

2 回答 2

2

分配跟踪器为您提供提示:列Thread IdAllocated in。观看这些,您将了解哪个对象和方法进行了分配。

我的非活动应用程序在 DdmServer 中显示分配,这表明内存用于 DDMS 服务工作。

如果您得到其他类型的分配,请检查您的应用程序是否有一些未完成的线程,或其他可能仍在后台运行的任务。如果是这种情况,请确保在 Activity.onDestroy 中进行清理。

于 2012-03-28T11:31:59.873 回答
1

因为 DDMS 附加到它,所以有代码在进程中运行。该代码是远程调试工具的“远程”部分。由于那里运行代码,该代码将分配内存,您将看到这些分配。

如果调试器未附加到进程,则操作系统可以根据需要或需要销毁进程。但是,由于附加了调试器,因此在您观看时该进程不会消失。

这是观察者效应的一个例子,你会因为你在看而得到意想不到的结果 ;-)

于 2012-03-28T11:55:53.907 回答