5

我创建了一个带有一个 Activity 和包名称的 Android 应用程序"com.explore"

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

我运行 ps 命令。

USER     PID   PPID  VSIZE  RSS     WCHAN    PC         NAME
app_137   2974  91    478604 48524 ffffffff 00000000 S com.explore

我按下返回按钮。我退出应用程序并进入主屏幕现在再次运行 ps 命令。

USER     PID   PPID  VSIZE  RSS     WCHAN    PC         NAME
app_137   2974  91    472428 42572 ffffffff 00000000 S com.explore

进程 2974 仍在运行。有人可以解释一下我的行为吗?那是内存使用情况,状态或进程将持续多长时间?按下后我应该从我的代码中终止进程吗?如何优雅地杀死进程?

4

2 回答 2

5

当您运行一个应用程序时,如果它尚未运行,它会获得一个新的进程 ID。这个 ID 一直存在,直到它完全不在内存中。(这可以通过使用应用程序设置中的“强制停止”选项来实现和测试。)

但是,当用户点击返回或主页按钮时,应用程序不会退出,并且在大多数情况下,只会暂停或停止。

您可以阅读此文档,其中详细介绍了流程生命周期。第 1 点和第 2 点基本上说,除非绝对必要(强制关闭或没有内存),否则不会终止前台进程(或在某些表面上的进程,例如对话框)。第 3 点很重要;它说任何不再需要的进程——即用户已经“关闭”它——可能会也可能不会被杀死,这取决于设备的内存。最后,第 4 点,任何没有做任何事情,但只是......存在......将尽快被杀死。

您可能还想查看Activity生命周期。这将准确地向您显示应用程序的每个步骤何时发生(即何时暂停、何时停止以及何时销毁)。它唯一没有真正涵盖的是内存的过度分配(或方向更改,这会重新触发整个生命周期)。

最后,请记住,Android 是智能的。它比大多数开发人员更好地管理其流程,并尝试保留尽可能多的流程以便于重用。除非您绝对确定您希望您的进程内存不足,否则您永远不应该杀死它。而且我们必须杀死和管理进程的方式从来都不是很好

于 2012-09-10T05:27:16.217 回答
2

开始阅读基础知识。简而言之,在大多数情况下,您不应该关心进程,Android 会负责自动启动和停止这些进程。杀死进程可能会导致系统重新启动它,因此通常没有什么好处。忘记“任务杀手”和类似的实用程序,它们现在大多没用。

于 2012-09-10T05:08:43.403 回答