为什么用iPhone的电池不关闭应用程序会更好?


51

我知道,显然,关闭iPhone上的应用程序以节省电池不是一个好主意。我已阅读过类似的问题和解答,例如,强制关闭应用程序是否在iOS设备上有任何好处?但它仍然不适合我。有时我发现有50多个应用正在运行,因此关闭它们是没有意义的。

也许我有点老套了,您只是不能教老狗新的花样,但是这里有人可以解释一下为什么最好让所有这些应用程序都运行吗?当我说“解释”时,我的意思是外行,以便我能理解。


31
误解是“运行中”的部分。Switcher中的应用程序不一定运行,实际上大多数都没有运行。将其视为过程监视器而不是“最近使用”的列表
nohillside

3
与patrix一样,我想补充一点,就是iOS内存不足时会自行关闭应用程序,因此即使看起来有50个应用程序正在“运行”,如果您正在观看视频,那么其他49个应用程序实际上有很大的机会在2/3分钟后终止。此时,应用程序切换器仅显示这些应用程序的最新屏幕截图。
编码猴子

5
@CodedMonkey我基本上同意您的评论,但是我要澄清的是其他49个不会终止,它们会被暂停。区别在于,终止某个应用程序后,它不再驻留在内存中,而被挂起则意味着它在屏幕上不可见,也不执行代码。在这种状态下,它不使用处理器或电池,但仍驻留在内存中。但是,所有这些,以您的示例为例,我的猜测是,iOS可能实际上终止了其他49个应用程序中的一些,但其中大多数仍处于暂停状态。
Monomeeth

8
我们可能需要解决房间里的大象-您说什么来“让所有这些应用程序保持运行”-以及什么是“关闭应用程序”-iOS 11最多运行三个应用程序,并且某些应用程序会定期进行后台激活(通过设计),如果我们是用宽泛/外行的术语谈论操作系统。如果这是为了消除有关是否从多任务UI中删除已保存的应用程序图像缩略图的争论-我们只需在问题中解决这个问题即可。
bmike

3
我(现在)将314个Safari晒黑程序和57个“打开”应用程序吓坏了我的朋友。
蒂姆(Tim)

Answers:


64

你不是一个人。人们只是习惯了台式计算机的习惯,可以理解的是,他们将这些习惯带到了iPhone和iPad上。

但是,让我尝试用一​​个类比解释一下:

想象这是一个炎热的日子,而您不在园艺中。你口渴了,于是你走进厨房,拿起一大杯,放一些冰,然后加水。然后,您将其喝掉一半,其余的倒在水槽中,然后再返回室外。不久之后,您又感到口渴,于是您回到厨房,抓起同一杯玻璃,在其中放一些冰,然后加水。同样,您只喝一半,其余的倒入水槽!

上面的工作流程实际上没有任何意义。你为什么不随身带玻璃杯呢?而且,您不仅要排空水,而且还要花费更多的时间和精力来再次取水。

同样,当您退出某个应用程序时,实际上是在消耗一些电池电量(例如,从RAM中清除它等),然后在以后再次使用时,必须再次启动并将其加载回RAM中。

因此,在大多数情况下,最好让应用保持打开状态。即使它们是打开的,它们实际上只是处于一种暂停模式,不使用任何电池电量。是的,该应用程序仍加载在RAM中并占用空间,但实际上并没有做任何事情 -它只是在休眠中。而且,因为在这种状态下它不使用任何电池电量,所以从节省电池的角度来看,退出它没有任何优势- 尤其是如果它是一个应用程序,您知道您将在一整天内反复使用。

强制退出应用程序实际上也没有优势,因为如果需要/需要释放内存,iOS本身会为您执行此操作。因此,如果您有50个打开的应用程序并且它们保持打开状态,则iOS并没有达到需要关闭其中任何一个以释放内存的程度。

现在,像其他任何东西一样,规则总是存在例外情况(例如必须执行后台任务的应用程序)。例如,当您在用手机做其他事情时播放音乐,或者在后台下载内容,或者计算您一天要走多少步等等。例如,iOS具有一个管理后台应用程序/任务的高效过程,如果您选择退出这些程序,则基本上是在说您不信任操作系统正确完成其工作。

因此,请在需要时随时退出应用程序(例如,因为它已冻结等),但不要这样做以节省电池电量。实际上,如果您这样做了,您将获得相反的效果并全天使用更多的电池电量!

摘要

  • 您仅需要在应用程序无法正常运行时退出应用程序(例如,应用程序已冻结,显示不正确等)。
  • 应用程序切换器中列出的应用程序不一定运行 -实际上,大多数应用程序根本没有运行
  • 应用程序切换器中的大多数应用程序都将处于暂停状态 -这意味着它们不处于:在屏幕上可见,正在执行代码,使用CPU或GPU或电池。然而,他们仍然驻留在内存中,直到它们被清除(如有必要)由系统来释放内存:

    已暂停 -该应用程序在后台运行,但未执行代码。系统会自动将应用程序移至此状态,并且在执行此操作之前不会通知它们。挂起时,应用程序仍保留在内存中,但不执行任何代码。当发生内存不足的情况时,系统可能会清除挂起的应用程序而不会发出通知,从而为前景应用程序腾出更多空间。

    来源:请参阅此答案末尾的第一个参考链接中的表2-3

  • 在任何给定的时间点,iPhone上实际运行的唯一应用程序是活动应用程序(即,在屏幕上可见的应用程序)和其他在后台运行的应用程序。(注意:对于某些尚属暂时的例外情况,对于那些仍需要时间来完成它们在活动状态下已经启动的代码的应用程序,通常只有几秒钟的时间,但理论上可以延长一分钟以上。) 。

  • 对于在后台运行的应用程序,您可以转到设置>常规>后台应用程序刷新来控制允许哪些应用程序(如果它们处于打开状态)。(注意:仅仅因为您看到此处列出的应用程序并不意味着它会在后台运行,但是在此处禁用它绝对不会!)
  • 如果您的iPhone已锁定,则锁定设备时处于活动状态(即在屏幕上可见)的应用程序现在处于非活动状态。但是,除非您仅锁定了iPhone并且它仍在完成执行代码或在后台运行(例如,播放音乐等),否则它就不会使用CPU,GPU或电池。

参考文献

  1. 有关应用程序可能处于的各种状态的更多信息,请参阅Apple的iOS应用程序编程指南:应用程序的执行状态
  2. 有关在后台运行的应用程序的更多信息,请参阅Apple的iOS应用程序编程指南:后台执行

9
因此,如果您有50个打开的应用程序并且它们保持打开状态,那么iOS并没有被迫关闭任何一个以释放内存的程度。要明确一点,您无法判断该应用程序中的应用程序是否切换台是否真正打开(即驻留在内存中)。
MJeffryes

24
电池电量耗尽的原因再次启动了该应用程序。暂停应用程序很便宜。恢复已暂停的应用很便宜。但是需要从头开始完全加载应用程序会占用大量资源(即使其中一些仍可能被缓存):操作系统需要加载应用程序及其所有相关框架,完整的应用程序启动代码需要再次运行,等等。 。
DarkDust

5
我一直以为,切换台会以上次使用的顺序列出手机上曾经打开过的所有应用程序,直到达到某个最大限制为止,无论它们是否在内存中。如果我滚动到足够远,切换到应用程序将引起相当长的暂停,因为(我假设)该应用程序是从磁盘加载的。是否有任何文件可以证实您对它的行为的看法?
MJeffryes

7
这是一个有用的答案,但是,除非每个应用程序都有真正的微观内存占用,否则iOS不可能将其全部暂停50个应用程序。我整天都在大型应用程序之间切换(Safari,Twitter,Facebook,Reddit,YouTube等),而且我经常得到“完全重载”,切换回最近使用的列表中仅2或3张卡片的应用程序。
BradC

3
@Monomeeth在应用程序切换器中有大量有效终止的应用程序,即要求完全重新加载才能恢复。我不相信,iOS不会完全终止,除非发生崩溃-它只是停留在应用切换器中,而不是驻留在内存中,或者或多或少地提供了更方便地访问的便利。

22

提供的答案是准确的,我只想从iOS开发人员的角度进行澄清。

iOS旨在管理尽可能多的事物,因此您(和开发人员)不必担心它们。最终结果是跨应用程序(包括Apple的应用程序)采取了某种程度一致的方法(甚至有时Apple自己也犯了一些错误)。

话虽如此,前提是:

  • iOS比我们更了解内存。它知道它有多少,需要多少(在一定程度上)。
  • iOS完全控制内存;它最终决定了谁使用什么。
  • 如果iOS需要内存,它将找到它,这通常是通过杀死闲置了一段时间的其他进程来完成的(并且幕后有很多规则,我们不了解所有规则,我们也不是真的)担心他们)。
  • 处理器(CPU)所做的一切都需要能量。绝对一切。不要忘记,计算机只是很小的电子容器,可以在很小的空间中移动它们。
  • 当某个应用被杀死时,有一些约定的协议(合同)定义了需要执行的操作。iOS强制执行并带有这些协议。但是必须完成工作,它不是免费的,而且肯定并不总是便宜的(这实际上取决于应用程序是什么)。

说了这么多,人们就以为大多数用户关闭应用程序是为了希望延长电池寿命,而这种印象是,通过关闭设备,可以减少维持这些应用程序运行的能源消耗。

事实是,在iOS上几乎并非如此。当您按下主屏幕时,该应用将被暂停,并且不再使用其他应用可能需要的资源。如果一个新的应用程序(甚至iOS)需要该内存,它会自行处理它,但在需要时才会处理

您一遍又一遍地关闭应用程序,这迫使iOS进行真正卸载应用程序,保存其状态等潜在的昂贵任务,而另一个问题是,当您重新打开应用程序时,所有内容都必须还原并且,根据应用程序的复杂性,必须从存储中读取很多内容,直到手机的主内存,等等。如果您只是让应用程序保持其“已暂停”状态,则可以避免所有这些额外的工作。

但是 ……

在某些情况下(它们很少见但并非罕见),您想杀死行为异常的应用程序。示例包括(但不限于):处理背景音频或异步服务(例如位置)的应用(其中,应用要求输入位置,iOS必须去询问周围的位置,例如,如有必要,通过发射GPS) ,视频流等

我遇到了无数实例,例如Lyft,United Airlines甚至Twitter,最终都处于崩溃状态(或者根本无法正常工作),这可能是因为您的网络状况很差(iOS确实很糟糕)从过去3-4个发行版中的某些不良网络中恢复),或者网络根本无法正确响应。

随着时间的流逝,大多数这些问题往往都会消失,并且该应用会重新开始运行;但如果你真的需要的应用程序的工作,现在,那么你必须继续前进,并支付其杀死它,并从头开始重新启动它的价格。这样做会消耗更多的电池,但是,嘿,您需要它。

如果这令人困惑,我可以给您打个比喻,因为这就是我们一直在做的事情。

汽车类比

我知道汽车技术已经进步,这不再是一个很好的例子,而是在这里与我一起玩

点火汽车的引擎过去不仅消耗空转,还消耗更多的燃料。当汽车使用化油器而不是喷油器时,情况更糟。这就是为什么在红灯停止时关闭引擎的原因,理论上可以比空转一分钟消耗更多的燃料。较新的汽车具有效率更高的机制,可以使引擎停止运转,但仍处于半启动状态(这里不要太偏爱汽车)。

关闭应用程序,就等于一个人在每个停车灯处都将汽车关掉。而不是让它闲置直到再次需要它,通常是几秒钟后。

这个比喻不是完美的,因为事实是,闲置的汽车仍在使用燃料,而暂停的应用程序却没有。但是,在电话眼中,他们没有使用任何与内存/电池有关的东西(显然,只要他们没有任何活动的后台处理)。

基本上,您每次关闭应用程序时都会关闭引擎,并且不会让iOS的“智能”机制使引擎空转,因此,当指示灯变为绿色时,您只需按加速器并引擎的运转速度比100%停止的速度还要。从停止状态启动发动机不仅消耗燃料,还消耗更多的功率,您需要转动启动器,以便发动机可以起动,喷射燃料并产生火花,因此……这是幕后工作。应用就像引擎。:)


1
哈哈,我喜欢这个比喻(和你的回答)。:)
Monomeeth

有关您的评论的问题有关:行为不当的应用程序:“ [...]如果您确实需要立即运行该应用程序,那么您必须继续付出代价,必须杀死该应用程序并从头开始重新启动它。您使用了更多电池通过这样做[...]您是否认为这样做普遍浪费?虽然我不退出应用程序,但我经常认为挂断或遇到问题的应用程序可能会反复尝试和无法完成其想做的事情,从而消耗大量资源。我认为这可能比从头开始重新启动要少,您认为通常是这样吗?
brhfl

1
@brhfl很难说,每个应用程序都是一个不同的世界。有明显迹象表明出了问题。如果您在尝试使用应用程序时手机在短时间内变得非常热,则可能表示正在使用CPU,例如手机感觉迟钝(例如动画跳过帧)。这是一个好兆头,表明某物正在使用比其应有的资源更多的资源,在这种情况下,杀死可疑应用程序是必经之路。通常,如果某个应用程序运行不佳(后台运行),即使它运行不佳,它也别无选择,只能运行。否则可能会被iOS杀死。
Martin Marconcini

1
  1. 如果您完全强制关闭某个应用程序,则在以后需要重新打开它时,与启动新应用程序实例相关的开销比从一个应用程序切换到另一个应用程序还要更多的CPU和能源消耗。
  2. 当应用仅位于内存中时,除非它实际上是为在后台运行而构建的,否则通常会被暂停或终止,并且通常不会占用任何CPU周期。如果它是一个相当简单的应用程序,那么它将仅使用内存坐在那里。在这种情况下,应用程序状态会保留在其他位置(对于Android,则存储在设备存储中),以便以后可以恢复应用程序状态。为了给您提供一个想法,我在手机的Viber应用程序中写的一条相当长的未发送消息在手机因电池耗尽而关闭后仍然幸免。重新启动手机,然后重新启动Viber之后,我发现消息正在等待我发送。哈雷路亚。
  3. 取决于您的存储芯片,它包含零还是1不会对功耗产生任何重大影响。因此,将内容保存在not中不会显着节省电池。
  4. 当某个应用处于超级深度睡眠状态(当然,请确认这一点)时,只有在应用切换器中可以看到对它的引用,作为进入该应用之前最后一个屏幕的快照。我之所以这样说,是因为有一天,我决定关闭iPad中的所有应用程序,而我对不得不关闭的应用程序数量感到惊讶。它有60多个应用程序。这些内容无法全部保存在iPad的内存中。我看到那里有一些应用程序,这些应用程序是几个月前使用的。

打个比方...与您的汽车类似,如果您在白天需要进行太多次停车并继续停止和起动发动机,那么电池完全耗尽的时候就会到来。如果您在两次停车之间行驶时的充电时间不足以恢复每次启动发动机时从电池吸收的大量能量,则可能会发生这种情况。此外,这对于起动器和总的气体消耗都是不利的。这就是为什么许多送货卡车司机会在短暂停留期间保持发动机空转的原因。

这个比喻是IMO,类似于节省内存的神话。


-1

只是为了讨论而在这里提出了不同的意见。这个概念具有一定程度的真实性,但是一旦您打开了一定数量的应用程序,则很可能会开始看到保持暂停状态的收益递减。

显然,您打开的应用程序越多,ram的使用就越多。通常,内存中的每个应用程序都会划分为应用程序本身当前正在使用的内存,该应用程序希望拥有的内存以及操作系统实际允许该应用程序使用的内存,这将为您提供该应用程序的最终内存量允许使用。该应用程序将其内存的一部分保留为要使用的内存的原因是,因为该应用程序可能需要增加其堆空间,但并不一定要立即执行此操作,因为这对垃圾收集器不利具有大堆(大堆=较长的垃圾回收),因此该应用程序将预留一部分当前未使用的内存,但在需要时可以由应用程序专用。

假设操作系统最多允许我的应用程序使用700mb,并且该应用程序本身预留了300mb的内存,如果需要,可以将400mb留给我的应用程序使用,但是随后另一个应用程序打开并需要一些内存;操作系统会查看所有不同的应用程序,并确定是否可以从其他应用程序中提取一些内存并将其用于新应用程序,在这种情况下,它可能会决定从我的应用程序允许的内存中占用150mb并将其分配给新应用程序,需要交换内存以提供新的应用程序内存来​​使用(将其视为企业资金的重新分配),您打开的应用程序越多,操作系统实际要做的工作就越多。它可以虹吸哪个应用程序的内存以提供新的应用程序内存。

从这个意义上讲,每个打开并挂起的应用程序都会增加此过程的复杂性,使其占用更多的CPU资源,最终打开潜在的应用程序所需要的电池电量将比不关闭其他应用程序节省的电池电量更多。

现在提醒您,所有这些都没有考虑到,除非您真正终止了应用程序,否则可能会运行正在运行的后台服务,这些后台服务会吞噬处理能力,例如,设置为在计时器上通知您的通知等。应用程序不使用真正的后台服务,而是实际使用来自诸如Firebase之类的服务的推送通知,不需要任何时候打开该应用程序。

要考虑的另一件事是,您不断打开的应用程序越多,在操作系统经过并清理内存以使其更干净和更有效地布置之前,内存最初将更加分散,这本身也消耗了处理能力,并且应用程序占用的内存越多,此过程对您的设备的消耗就越大。

综上所述,除非打开了太多应用程序,否则打开应用程序通常更有效,但是我不确定要打开多少个应用程序才能达到此阈值(如果存在)。

资料来源:

适用于Mono的SGen垃圾收集器:http//www.mono-project.com/docs/advanced/garbage-collector/sgen/

iOS和Android Xamarin应用程序的内存探查器概述,显示了应用程序管理内存的方式(工作集,私有字节,分配的内存等) 。https://blog.xamarin.com/say-hello-to -xamarin-profiler /


1
我不确定这是正确的-您是iOS开发人员吗?我相信,iOS可以根据需要自行决定杀死已暂停的应用程序以释放内存,但我强烈怀疑它能否部分减少已暂停应用程序的内存占用。至少作为一个用户,它看起来是全部还是什么都没有。
BradC

2
对于“完整”操作系统同时执行完全运行的应用程序的多任务处理而言,这都是正确的。对于iOS并非如此(新的分屏配置除外)。我并不是说我肯定你错了,我只是说你来自其他操作系统的直觉可能不适用于这里。
BradC

1
恕我直言,您将应用切换器与“打开” /“内存中”应用列表混淆了。显然不是这种情况,因此对于切换器中具有5或20个应用程序的iPhone,内存占用可能完全相同
nohillside

2
Mono / Xamarin框架的内存管理不能代表本机应用程序/服务在iOS平台上的工作方式。iOS和Objective-C / Swift运行时不实现垃圾回收。
Mike Mertsock


-2

简洁版本: 更好,因为该操作系统旨在将其设计得更好,以至于用户希望保持应用程序处于打开状态(或处于“挂起”状态),以便以后收集有关您的操作的更多信息[*]如果需要的话。

较长的版本: “挂起”的应用程序将其状态保存在内存中,因此一旦您要启动它们进行备份,将一切加载回去的过程将需要较少的时间来处理过程,并且几乎不使用存储单元。您可能无法知道您的应用是否在后台做其他事情,而在很多情况下,它们却坐在那里收集您的数据。


[*]要详细说明您所收集的数据...内存中存储的应用程序可以“挂起”或在后台激活。作为设备所有者,您不知道(如果您不了解其他应用程序来主动扫描CPU使用情况),该应用程序实际上在做什么。从安全的角度来看,我建议您在接下来的10分钟内关闭所有您将不使用的应用程序。

PS此做法在Android设备以及Btw ...


6
-1如果没有“您的手机旨在监视您”的含义,则此答案会更好。
Nzall

4
“您的手机旨在监视您”实际上并不适用于Apple设备-它们不会从个人数据afaik赚钱。
wizzwizz4

1
@ wizzwizz4说谁?
2017年

1
@yo'说我无法找到证据表明他们确实这样做。假设真诚,以及所有这些。
wizzwizz4
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.