现在,我知道在Android中没有“退出”应用程序。我的意思是,即使在该应用程序中的所有活动都被销毁之后,与应用程序相对应的进程也会保留在内存中。 (为简单起见,让我们保留服务等等)。只有在系统决定这样做才能回收内存时,才会终止该过程。
但是,一旦我的所有活动都被销毁,我会假设与我的应用程序对应的进程不再“活动”。我的意思是,由于我的应用程序没有做任何工作,我认为该过程不再执行分配。这个假设是否正确?
我使用了Eclipse ADT通过HelloWorld
给我的简单默认New Android Project Wizard
示例,并且发现情况并非如此。 即使关闭应用后,我仍然可以跟踪DDMS中的分配。任何人都可以解释这个原因吗?
答案 0 :(得分:2)
分配跟踪器为您提供了提示:列主题标识和分配在。 观察这些,您将了解哪个对象和方法进行了分配。
我的非活动应用程序显示DdmServer中的分配,这表示内存用于DDMS服务工作。
如果您获得其他类型的分配,请检查您的应用是否有一些未完成的线程,或者其他可能仍在后台运行的任务。如果是这种情况,请确保在Activity.onDestroy中进行清理。
答案 1 :(得分:1)
在流程中运行代码,因为DDMS附加到它上面。该代码是远程调试工具的“远程”部分。由于代码在那里运行,该代码将分配内存,您将看到这些分配。
如果调试器未附加到进程,则操作系统可能会在需要或需要时销毁该进程。但是,由于附加了调试器,因此在您观看时,该过程不会消失。
这是Observer effect的一个示例,您只是因为正在观看而得到意想不到的结果; - )