Answers:
如果您使用BACK按钮退出应用程序,则它将调用onDestroy()
当前的活动,如果您按HOME它仅调用onPause()
不必太担心,活动不会耗尽电池,它们只会留在内存中,因此可以打开它们未来更快。
我不建议使用其中一种任务杀手应用程序,Android出于某种原因将其设计为将这些内容保留在内存中,使用任务杀手仅是一项额外的服务,需要消耗大量电量。.您需要注意的是在后台运行服务的应用程序(例如Twitter或电子邮件客户端拉服务器),任何具有此类服务的优质应用程序都可以选择将其关闭。
我很确定我所读过的所有内容都表明该Back按钮是退出应用程序的正确方法。
按下Home该按钮可使它们在后台运行,直到Android决定不再需要它们为止。如果您只需要在应用之间切换以进行检查,这会很方便(按住Home键几秒钟会为您提供最近运行的应用列表)您可以切换回大多数手机),但使用“后退”按钮显示出来时,该应用会告知您要关闭该应用。
在Android中,活动(即您可以看到的应用程序的一部分)永远不会在后台运行。它们只能在屏幕上运行(并使用电池电源)。无论您是在家还是回到家中,该活动都会停止运行。唯一的区别是Android要求应用程序保存哪些数据,因此这两个选项都不是“正确的方法”。这仅取决于您要做什么。
如果您使用home,Android会将应用保持在相同的状态,以便稍后再返回它(例如,通过最近的应用列表)时,它仍将保持与您离开时相同的状态:在同一屏幕上,显示相同的内容。例如,如果这是一个电子邮件应用程序,而您正在查看一封电子邮件,那么它将记住那封电子邮件,并向您显示相同的电子邮件。
最终(大约半小时后),Android得出结论,您没有返回该应用程序,因此它将重置此状态:下次启动该应用程序时,它将从前/主屏幕开始。要继续该示例,电子邮件应用程序将忘记您正在查看的电子邮件和文件夹,并向您显示收件箱。
如果您使用back,那么您将告诉Android您不想返回该视图。它将立即破坏有关您正在查看内容的信息。下次启动该应用程序时,它将显示前屏幕(例如收件箱)。
正如其他人所说,应用程序可以控制后退按钮的行为:例如,Web浏览器使用它来返回浏览器历史记录。我所描述的是后退按钮的默认行为,并敦促开发人员保持这种行为以避免混淆。
无论您使用哪种方法,Android都会将应用程序尽可能长时间地保留在内存中(但不会运行)。这将更加有效。当您返回应用程序时,如果它仍在内存中,则Android可以立即再次运行它。如果它仍不在内存中,则Android必须花费时间和精力再次从存储中加载应用。
在旧的Android版本中,以这种方式在后台保留在内存中的应用程序包含在“正在运行的应用程序”列表中。这对用户来说有点令人困惑-它使人们认为该应用程序确实仍在运行-因此,较新的版本将这些应用程序称为“缓存的后台进程”,以明确它们仅在缓存中而不在运行。
之前,我说过活动不是在后台进行的。那么您的电子邮件客户端如何检查邮件?除了活动外,应用程序还可以提供服务。服务没有供您查看或与之交互的GUI,但它们确实在后台运行。通常,服务仅会很少运行,例如每小时检查一次邮件,但是应用程序开发人员可能会一直运行该服务,从而耗尽电池电量。
将活动留在家里或后面不会改变Android如何对待来自同一应用程序的任何服务:该服务可以继续运行,也可以在给定时间稍后触发(下次检查邮件)。
总而言之,无论您使用后退还是回家都不重要:它只会更改应用程序下次运行时显示的内容。它对电池使用没有影响。它们都不对应于“退出” PC上的程序。
在Android中,无需关闭应用程序,并且在其他地方需要资源时,操作系统会负责清理所有剩余应用程序的内存。使用任务杀手只会破坏操作系统的正常运行,甚至会降低设备的速度,因为始终需要从头开始重新加载应用程序。
Android应用程序生命周期的工作方式是,不在顶部的应用程序以暂停状态移动,不再使用任何cpu;如果再次打开应用程序,则仅保留内存内容;并在需要时释放内存。
话虽这么说,应用程序开发人员在创建应用程序时有责任遵循应用程序生命周期,因此可能会发生一些错误或错误,从而导致应用程序从未真正停止或暂停。如果遇到此类应用程序以及关闭该应用程序的方法,可以通过在应用程序上选择“强制停止”,通过“设置”->“应用程序”->“管理应用程序”进行操作。
但是我真的不建议使用在设备上不断运行的任务杀手。
只需添加schwiz的答案,即只需几行代码即可覆盖后退按钮的功能。因此关闭应用程序并不总是可靠的。因此,如果应用程序开发人员不想在按“后退”按钮时关闭该应用程序,则它不会关闭。
尽管大多数优秀的应用程序开发人员会在按下应用程序主菜单上的后退按钮时弹出一个警告对话框,询问用户是否打算退出该应用程序,但是如果您单击退出,它会关闭该应用程序。
正确的答案可能是,关闭应用程序完全取决于应用程序开发人员,如果他们希望按下主屏幕按钮关闭应用程序,则将退出代码放入onPause()
。如果他们希望将其放在“后退”按钮上,则将其放在中onBackKeyPressed
。因此,它并不是真正掌握在用户手中。
用户可以在不需要时避免使用未提供适当关闭功能的应用程序。任务管理器不是关闭应用程序的好方法,因为它可能会使应用程序崩溃并且无法给他们提供保存状态的机会。
操作系统会在必要时关闭该应用程序,因此您不必担心太多。
编辑:
有一个选项可以在您离开应用程序后即单击Home键时销毁应用程序。您可以转到Settings
-> Developer Options
-> Don't keep Activities
。尽管它是开发人员选项,但是如果您过于担心后台运行的应用程序,则可以使用此选项。但是请记住,不建议非开发人员使用它。