为什么Android和iOS在关闭应用程序时不会终止进程?

问题描述 投票:1回答:4

在Windows,MacOS和Linux上,当应用程序关闭时,标准是它的进程也被杀死。这在Windows / Linux上默认发生,在MacOS上,当没有打开应用程序窗口时,按CMD + Q来杀死进程似乎仍然是一个好主意。

在Android(以及iOS)上,当应用程序处于后台时,它的进程仍然保留在内存中,直到操作系统发现有必要将其推出。可以杀死该进程,但此步骤不是默认的操作系统行为,并且有点不鼓励用户体验。

为什么?


更新

一些回复确实表明将应用程序保留在内存中有潜在的好处。因此,接下来将进一步跟进,为什么主流桌面操作系统不遵循相同的方法来获得所有相同的好处?

android ios mobile memory-management
4个回答
2
投票

Android非常擅长管理其资源。它有一定的内存(RAM)可供使用,并且它会愉快地允许应用程序尽可能多地使用它们以获得最佳性能。

如果RAM开始变得有点短,而其他应用程序和任务需要一些,那么操作系统将悄然关闭在后台运行的一个你暂时没有使用的应用程序,并将该应用程序的RAM分配给新任务。

因此,自您上次使用应用程序以来,应用程序可以在内存中保留数小时,数天或甚至数周。这很好。他们没有耗尽电池或使用其他资源,所以没有任何缺点;好处是,当你需要它们时它们会加载得更快,然后将它们装回你离开的地方。

(此时值得注意的是,保持RAM空闲并没有任何好处。使用RAM,在任何给定时间使用所有内存 - 或者至少在所有时间使用它 - 将确保您的手机或平板电脑运行更顺畅比如果你尝试保持一些RAM免费。)

考虑到这一切,很明显为什么关闭应用程序会对Android产生更糟糕的影响而不是让它们保持打开状态。

参考:androidtipsandhacks.com


1
投票

回答你的问题更新,并同意已发布的答案,说明将应用程序保留在内存中可能更适合电池和应用程序恢复/启动。

移动设备设计为完全移动,一直放在口袋或手中,并连接到电源插座,只是为了充电,通常没有更多。因此,它必须具有节省电池的设计。

桌面始终连接到插座,因此没有电池缺点和移动设备的要求。

关于笔记本电脑,虽然它们是便携式的,但它们实际上大部分时间都用于连接电源插座。它们可以从一个点传送到另一个点的事实并不能使它们与移动设备相媲美。

因此,虽然桌面操作系统现在几天都有专为笔记本电脑量身定制的省电功能,但它们的设计主要集中在这样一个事实,即主机设备通常可以连接到电源插座,而且它们从未演变为以节省电池为中心设计,这是移动设备的“必须”要求。

另一方面,如果你不想考虑电池但应用程序恢复/启动的好处,那么实际上这种功能已经在两种类型的操作系统中实现,但是以非常不同的方式实现。例如,在Windows中,您可以最小化程序,这与在Android中按主页按钮完全相同。要关闭它,按下角落的x按钮或程序的退出选项,这就像去Android应用程序任务管理器(最近的应用程序历史记录)并杀死应用程序。


0
投票

因为某些应用程序行为依赖于在主进程被终止时无法工作的后台服务。当你从最近的时候刷掉一个应用程序,你并没有真正杀死应用程序,后台服务仍然存在。

想象一下你关闭Whatsapp并且操作系统认为杀死整个过程是一个好主意。除非您重新启动应用程序,否则您不会收到任何消息。


0
投票

根据documentation,Android应用程序中有4种状态的应用程序。

我们来看几个案例。

1.应用程序运行Activity。用户按下主页按钮。 在这种情况下,应用状态将从Foreground移至Cached。 当用户在应用程序之间切换时,Cached状态用于提供更好的用户体验。因为打开缓存的活动要快得多,然后从保存的状态恢复它。

2.应用程序运行ActivityService。用户按下主页按钮。 在这种情况下,应用状态将从Foreground移至ServiceService state用于具有一些不重要的后台工作的进程。在这种情况下,保留了进程,因为它有一些后台工作要做。当然,您可以将Service移动到单独的进程,但这不是默认行为。

3.应用程序运行Activity和前景Service。用户按下主页按钮。 在这种情况下,应用状态将从Foreground移至VisibleVisible状态用于进程,这些进程对用户可见,但他不直接与之交互。前景Service用于做重要的后台工作,并在Visible州保持进程。再次,UIBackground应用程序的部分默认放置在相同的过程中。

© www.soinside.com 2019 - 2024. All rights reserved.