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

为什么Android和iOS不在应用程序关闭时终止进程?,android,ios,mobile,memory-management,Android,Ios,Mobile,Memory Management,在Windows、MacOS和Linux上,当应用程序关闭时,其进程也会被终止。这在Windows/Linux上是默认情况,在MacOS上,当没有打开应用程序窗口时,按CMD+Q终止进程似乎仍然是一个好主意 在安卓和iOS上,当应用程序处于后台时,它的进程仍然存在于内存中,直到操作系统发现有必要将其推出。进程可以终止,但这一步不是默认的操作系统行为,用户体验不鼓励这样做 为什么? 更新 一些回复似乎确实表明,将应用程序保存在内存中有潜在的好处。因此,进一步的后续问题是,为什么主流桌面操作系统不遵

在Windows、MacOS和Linux上,当应用程序关闭时,其进程也会被终止。这在Windows/Linux上是默认情况,在MacOS上,当没有打开应用程序窗口时,按CMD+Q终止进程似乎仍然是一个好主意

在安卓和iOS上,当应用程序处于后台时,它的进程仍然存在于内存中,直到操作系统发现有必要将其推出。进程可以终止,但这一步不是默认的操作系统行为,用户体验不鼓励这样做

为什么?

更新


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

因为某些应用程序的行为依赖于后台服务,如果主进程被终止,这些后台服务将无法工作。当你从最近的应用程序中删除一个应用程序时,你并不是真的杀死了这个应用程序,后台服务仍然存在


假设您关闭Whatsapp,操作系统认为终止整个过程是个好主意。除非重新启动应用程序,否则您不会收到任何消息。

因为某些应用程序的行为依赖于后台服务,如果主进程被终止,后台服务将无法工作。当你从最近的应用程序中删除一个应用程序时,你并不是真的杀死了这个应用程序,后台服务仍然存在

假设您关闭Whatsapp,操作系统认为终止整个过程是个好主意。除非重新启动应用程序,否则不会收到任何消息

Android非常擅长管理其资源。它有一定数量的内存RAM可供使用,并且它将很高兴地允许应用程序尽可能多地使用,以获得最佳性能

如果RAM开始变得有点短,而其他应用程序和任务需要一些,那么操作系统将安静地关闭一个在后台运行的应用程序,您已经有一段时间没有使用了,并将该应用程序的RAM分配给新任务

因此,自上次使用应用程序以来,应用程序可以在内存中保留数小时、数天甚至数周。这很好。他们没有耗尽电池或使用其他资源,因此没有负面影响;好的一面是,当你需要它们的时候,它们会更快地装载,并且会直接装载到你离开的地方

在这一点上还值得注意的是,保持RAM空闲实际上没有任何好处。内存的存在是为了使用,在任何给定的时间使用所有内存或几乎所有内存,至少会确保手机或平板电脑的运行比尝试保持一些内存空闲时更顺畅

考虑到所有这些,关闭应用程序对安卓系统的影响要比打开应用程序更糟糕的原因就显而易见了

参考:

Android非常擅长管理其资源。它有一定数量的内存RAM可供使用,并且它将很高兴地允许应用程序尽可能多地使用,以获得最佳性能

如果RAM开始变得有点短,而其他应用程序和任务需要一些,那么操作系统将安静地关闭一个在后台运行的应用程序,您已经有一段时间没有使用了,并将该应用程序的RAM分配给新任务

因此,自上次使用应用程序以来,应用程序可以在内存中保留数小时、数天甚至数周。这很好。他们没有耗尽电池或使用其他资源,因此没有负面影响;好的一面是,当你需要它们的时候,它们会更快地装载,并且会直接装载到你离开的地方

在这一点上还值得注意的是,保持RAM空闲实际上没有任何好处。内存的存在是为了使用,在任何给定的时间使用所有内存或几乎所有内存,至少会确保手机或平板电脑的运行比尝试保持一些内存空闲时更顺畅

考虑到所有这些,关闭应用程序对安卓系统的影响要比打开应用程序更糟糕的原因就显而易见了

参考:

根据,android应用程序中有4种应用程序进程状态

让我们看几个案例

一,。应用程序具有运行活动。用户按下主页按钮。 在这种情况下,应用程序状态将从前台移动到缓存。 当用户在应用程序之间切换时,缓存状态用于提供更好的用户体验。因为打开缓存的活动要比从保存状态恢复快得多

二,。应用程序具有正在运行的活动和服务。用户按下主页按钮。 在这种情况下,应用程序状态将从前台移动到服务。 服务状态用于具有一些不重要后台作业的进程。在本例中,进程被保留,因为它有一些后台工作要做。当然,您可以将服务移动到单独的进程,但这不是默认行为

三,。应用程序具有运行活动和前台服务。用户按下主页按钮。 在这种情况下,应用程序状态将从前台移动到可见状态。 可见状态 e用于用户可见的流程,但用户不直接与之交互。前台服务用于执行重要的后台工作,并使进程保持可见状态。同样,应用程序的UI和后台部分默认放置在同一进程中。

根据,android应用程序中有4种应用程序进程状态

让我们看几个案例

一,。应用程序具有运行活动。用户按下主页按钮。 在这种情况下,应用程序状态将从前台移动到缓存。 当用户在应用程序之间切换时,缓存状态用于提供更好的用户体验。因为打开缓存的活动要比从保存状态恢复快得多

二,。应用程序具有正在运行的活动和服务。用户按下主页按钮。 在这种情况下,应用程序状态将从前台移动到服务。 服务状态用于具有一些不重要后台作业的进程。在本例中,进程被保留,因为它有一些后台工作要做。当然,您可以将服务移动到单独的进程,但这不是默认行为

三,。应用程序具有运行活动和前台服务。用户按下主页按钮。 在这种情况下,应用程序状态将从前台移动到可见状态。
可见状态用于进程,用户可以看到这些进程,但用户不直接与之交互。前台服务用于执行重要的后台工作,并使进程保持可见状态。同样,默认情况下,应用程序的UI和后台部分也放在同一个过程中。

回答您的问题更新,并同意已发布的答案,即将应用程序保留在内存中可能更利于电池和应用程序恢复/启动

移动设备被设计成完全可移动的,一直放在你的口袋或手上,连接到电源插座只是为了充电,通常仅此而已。因此,它必须有一个以节省电池为中心的设计

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

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

因此,尽管桌面操作系统现在主要为笔记本电脑定制了节电功能,但它们的设计重点是主机设备通常连接到电源插座工作,而且它们从未演变为以节电为中心的设计,这是移动设备必须具备的要求


[P>另一方面,如果你想考虑的不是电池,而是应用程序恢复/启动的好处,那么实际上这类功能已经在这两种类型的OSS中实现,但以一种非常不同的方式实现。例如,在Windows中,您可以最小化程序,这与在Android中按home按钮完全相同。要关闭该应用程序,请按角上的x按钮a或程序的退出选项,这就像进入Android应用程序任务管理器最近的应用程序历史记录并关闭该应用程序一样。

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

移动设备被设计成完全可移动的,一直放在你的口袋或手上,连接到电源插座只是为了充电,通常仅此而已。因此,它必须有一个以节省电池为中心的设计

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

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

因此,尽管桌面操作系统现在主要为笔记本电脑定制了节电功能,但它们的设计重点是主机设备通常连接到电源插座工作,而且它们从未演变为以节电为中心的设计,这是移动设备必须具备的要求

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