Android如何管理进程

Windows允许桌面应用程序保持运行,无论它们是否可见,而苹果的iOS只允许应用程序在后台执行几个有限的任务。Android介于两者之间--在前台运行的应用程序是优先的,但应用程序在后台运行的自由比在iOS上运行的自由多得多。

我们将详细了解Android是如何管理手机或平板电脑上运行的应用程序和进程的,揭开后台运行的神秘面纱。

流程生命周期层次结构

Android上的进程在任何给定时间都可能处于以下五种不同状态之一,从最重要到最不重要:

1.前台进程:您正在使用的APP被认为是前台进程。其他进程也可以被视为前台进程-例如,如果它们与当前在前台的进程交互。在任何给定时间都只有几个前台进程。 2.可见进程:可见进程不在前台,但仍在影响您在屏幕上看到的内容。例如,前台进程可以是允许您看到其后面的应用程序的对话框-在后台可见的应用程序将是可见的进程。 3.服务进程:服务进程与您屏幕上可见的任何APP都没有绑定。但是,它在后台执行某些操作,例如在后台播放音乐或下载数据。例如,如果您开始播放音乐并切换到另一个应用程序,则音乐播放在后台由服务进程处理。 4.后台进程:用户当前看不到后台进程。它们对使用手机的体验没有影响。在任何给定时间,许多后台进程当前都在运行。您可以将这些后台进程视为“暂停的”应用程序。它们保存在内存中,因此当您返回到它们时可以快速恢复使用它们,但是它们不会占用宝贵的CPU时间或其他非内存资源。 5.空进程:空进程不再包含任何APP数据。它可能会保留下来用于缓存目的,以便稍后加快应用程序的启动,或者系统可能会在必要时杀死它。

例如,假设你打开手机,打开一个音乐应用程序。当你使用它时,音乐应用程序将是一个前台进程。当你开始播放音乐并离开音乐应用程序时,音乐将继续作为服务进程播放。

让我们再来看看“愤怒的小鸟”这个例子。当你在玩“愤怒的小鸟”的时候,它会是一个前台程序。当你离开“愤怒的小鸟”,进入Gmail应用程序查看你的电子邮件时,“愤怒的小鸟”变成了后台进程(因为它不需要在后台做任何事情),而Gmail则变成了前台进程。当你切换回“愤怒的小鸟”时,它将成为你的前台进程,游戏将很快恢复。“愤怒的小鸟”没有在后台使用资源--除了一些RAM--但它恢复得很快,因为它仍然处于缓存状态,随时可以恢复。

Android自动管理进程

Android在自动管理这些进程方面做得很好,这就是为什么你在Android上不需要任务杀手的原因。

当Android需要更多系统资源时,它会首先杀死最不重要的进程。如果内存不足,Android将开始杀死空进程和后台进程以释放内存。如果您需要更多内存-例如,如果您在没有太多RAM的设备上玩一款要求特别高的游戏,Android将开始终止服务进程,因此您的流媒体音乐和文件下载可能会停止。

在大多数情况下,Android都可以做到这一点,而不需要你担心。Android智能地使用您设备的RAM来缓存应用程序和其他数据,因为让您的RAM为空是没有意义的。

当然,Android为应用程序提供了如此大的灵活性,以至于它们有行为不端的空间。例如,一个编码不佳的应用程序可能会启动一个始终在后台运行的服务进程,从而耗尽您所有的CPU时间,并显著缩短您的电池寿命。

在像Avast这样的反病毒应用程序中,你会注意到一件有趣的事情!对于Android来说,杀毒应用程序使用的是通知图标。如果您试图禁用通知图标,祝您好运!会建议你不要这么做。通过拥有一个可见的通知图标,Avast!使自己成为更高优先级的应用程序,防止Android将其视为后台应用程序并将其扼杀。

Android应用可以启动以响应事件

Android应用程序也可以启动以响应事件。例如,开发人员可以将他们的应用程序编程为在启动时自动运行,并在后台运行服务。应用程序可以启动以响应各种其他事件,例如当您拍照时、当您的数据连接更改时等等。这允许应用程序执行响应事件的操作,而无需在后台持续运行。

管理流程

您应该不需要手动管理流程,但是如果您愿意,有几种方法可以做到这一点。您可以在Android 4.0及更高版本上使用多任务菜单来执行一些基本的进程管理。要访问它,请轻触Nexus设备上的专用多任务按钮。在其他Android设备上,您可能需要双击或长按Home键。

菜单中显示的应用程序可能处于“后台进程”状态。你可以通过向左或向右滑动应用程序来杀死它们,这样就会从你的设备内存中删除它。这不应该是必要的,但当你想要快速杀死一个应用程序时,这可能会有所帮助-也许这是行为不端。

你也可以进入设置屏幕,点击应用程序,点击应用程序,然后使用强制停止按钮来杀死行为不端的应用程序。

Android是基于Linux的,Android上的每个应用程序都被分配到不同的Linux用户ID-或用户帐户。这会将应用程序彼此隔离。如果您以root身份启动设备,则应用程序可以脱离其用户沙箱,并以root权限运行。

图片来源:Flickr上的JD Hancock

相关文章