iPhoneのバッテリーがアプリを閉じないほうが良いのはなぜですか?


51

バッテリーを節約するために、iPhoneのアプリを閉じることはお勧めできません。iOSデバイスでアプリを強制終了することにはメリットがありますか?などの質問と回答を読みましたしかし、それはまだ私と完全にゲル化しません。時々私はそう、実行中の50個のアプリケーション上で発見したではない彼らは意味をなさない閉めます。

たぶん私は古いchookのビットだとあなただけの古い犬に新しい芸を教えることはできませんが、ここでは缶誰かが説明なぜそれだけで実行されているすべてのこれらのアプリケーションを維持する方が良いでしょうか?そして、私が「説明する」と言うとき、私は私が理解できるように素人の言葉で意味します。


31
誤解は「実行中」の部分です。Switcherのアプリは必ずしも実行されているわけではありませんが、ほとんどは実際には実行されていません。より多くのプロセスモニタよりも「最近使用」リストとしてそれを考える
nohillside

3
patrixのように、iOSがメモリ不足になるとアプリを自動的に閉じるため、50個のアプリが「実行中」に見えても、他の49人が実際に動画を視聴している可能性が非常に高いことを付け加えます。 2/3分後に終了しました。この時点では、アプリスイッチャーはこれらのアプリの最近の画面キャプチャのみを表示します。
コード化された猿

5
@CodedMonkey私はあなたのコメントに大部分は同意しますが、私がするであろう明確化の1つは、他の49は終了せず、中断されるということです。違いは、アプリが終了すると、メモリに常駐しなくなることです。一方、中断されると、画面に表示されず、コードも実行されません。この状態では、プロセッサまたはバッテリーを使用していませんが、メモリに常駐しています。ただし、あなたの例を使用すると、iOSが他の49個のアプリの一部を実際に終了し、ほとんどのアプリを一時停止状態に保つ可能性があると推測されます。
モノミース

8
おそらく部屋のゾウに対処する必要があります-「これらのすべてのアプリを実行し続ける」と言うもの-具体的には「アプリを閉じる」-iOS 11は最大3つのアプリを実行し、いくつかのアプリは定期的にバックグラウンドでアクティブ化されます)広いストローク/素人の言葉でOSについて話している場合。これが、保存されたアプリの画像サムネイルをマルチタスクUIから削除するかどうかの議論を放送することを意図している場合-質問でそれをクリアしましょう。
bmike

3
私は本当にサファリで314の日焼けをし、57個のアプリを「開いている」ことで、友達を本当に怖がらせています。
ティム

回答:


64

あなたは一人じゃない。人々はデスクトップコンピューターの習慣に慣れているだけであり、これらの習慣をiPhoneやiPadに引き継いでいるのは理解できることです。

ただし、これを類推して説明してみましょう。

暑い日で、園芸の外にいると想像してください。のどが渇いたら、台所に行き、大きなグラスを手に取り、そこに氷を入れて、水で満たします。その後、半分を飲んで、残りをシンクに入れてから外に戻ります。まもなく、のどが渇くので、キッチンに戻り、同じグラスを手に取り、そこに氷を入れて、水で満たします。繰り返しますが、半分だけを飲み、残りは流しに入れてください!

上記のワークフローは、実際には意味がありません。グラスを外に持って行かないのはなぜですか?そして、あなたはそれを空にして水を無駄にしているだけでなく、その水を再び得るためにより多くの時間とエネルギーを費やしています。

同様に、アプリを終了するときは、実際にそうする過程で(たとえば、RAMからクリアするなど)バッテリーを使用しており、後でもう一度起動してRAMに読み込む必要があるときに再度使用します。

そのため、ほとんどの場合、アプリを開いたままにしておくのが最善です。開いていても、バッテリーをまったく使用していないタイプの一時停止モードに実際に座っています。はい、アプリはまだRAMに読み込まれてスペースを取りますが、実際には何もしていません。また、この状態ではバッテリー電源を使用していないため、バッテリー節約の観点から終了する利点はありません- 特に、一日中何度も使用することがわかっているアプリの場合はそうです

iOS自体が RAMを解放するために必要な場合に必要に応じてこれを行うため、アプリを強制的に終了することにも利点はありません。したがって、50個のアプリを開いていて、開いたままになっている場合、iOSは、メモリを解放するためにそれらのいずれかを閉じる必要があるほどプッシュされていません。

さて、何でもそうですが、ルールには常に例外があります(バックグラウンドタスクを実行する必要があるアプリなど)。この例としては、携帯電話で他のことをしているときに音楽を再生するもの、バックグラウンドでコンテンツをダウンロードするもの、1日の歩数をカウントするものなどがあります。ただし、iOSにはバックグラウンドアプリ/タスクを管理するための効率的なプロセスであり、これらを終了することを選択した場合、基本的には、オペレーティングシステムがそのジョブを適切に実行することを信用していないと言えます。

そのため、必要に応じて(アプリがフリーズしているなどの理由で)アプリを自由に終了できますが、バッテリーの電力を節約するためにアプリを終了しないでください。実際、そうすれば、逆のことを達成し、1日を通してより多くのバッテリーを使用することになります!

概要

  • アプリが正常に動作しない場合にのみ、アプリを終了する必要があります(たとえば、アプリがフリーズした、正しく表示されないなど)。
  • App Switcherにリストされているアプリは必ずしも実行されているわけではありません-実際、それらのほとんどはまったく実行されていません
  • App Switcherのほとんどのアプリはサスペンド状態になります。つまり、画面上に表示されたり、コードを実行したり、CPUまたはGPUを使用したり、バッテリーを使用したりすることはありません。しかし、彼らはしているメモリにまだ常駐するまでそれらがメモリを解放するために、システムによって(必要な場合)パージされています。

    一時停止 -アプリはバックグラウンドにありますが、コードを実行していません。システムはアプリを自動的にこの状態に移行し、そうする前にアプリに通知しません。一時停止中、アプリはメモリに残りますが、コードは実行しません。メモリ不足の状態が発生すると、システムは中断されたアプリを予告なしに削除して、フォアグラウンドアプリ用のスペースを増やすことができます。

    出典:この回答の最後にある最初の参照リンク内の表2-3を参照してください。

  • 特定の時点で実際にiPhoneで実行されているアプリは、アクティブなアプリ(つまり、画面に表示されるアプリ)と、バックグラウンドで動作する他のアプリのみです。(注:アプリの場合、一時的な例外があります。アプリがアクティブな間に既に起動したコードの実行を完了するのに時間が必要な場合です。通常、これは数秒程度ですが、理論的には1分以上まで延長できます。) 。

  • バックグラウンドで実行されているアプリに関しては、[設定]> [全般]> [アプリのバックグラウンド更新]に移動して、許可するアプリを制御できます(開いている場合)。(注:ここにリストされているアプリが表示されているからといって、バックグラウンドで実行されるわけではありませんが、ここで無効にすると、確実に実行されなくなります!)
  • iPhoneがロックされている場合、デバイスをロックしたときにアクティブだった(つまり、画面に表示されていた)アプリは非アクティブになります。ただし、iPhoneをロックしただけで、コードの実行が終了するか、バックグラウンドで実行される(音楽の再生など)場合を除き、CPU、GPU、またはバッテリーは使用されません。

参照資料

  1. アプリのさまざまな状態の詳細については、AppleのiOS用アプリプログラミングガイド:アプリの実行状態を参照してください。
  2. バックグラウンドで実行されるアプリの詳細については、AppleのiOS用アプリプログラミングガイド:バックグラウンド実行を参照してください。

9
したがって、50個のアプリを開いていて、それらが開いたままになっている場合、iOSはメモリ解放するためにそれらのいずれかを閉じる必要があるほどプッシュされていません明確にするために、アプリ内のアプリを確認する方法はありませんスイッチャーが本当に開いている(つまり、メモリに常駐している)かどうか。
Mジェフリーズ

24
バッテリーを消耗しているのは、アプリを再び起動していることです。アプリの中断は安価です。中断されたアプリの再開は安価です。しかし、アプリを最初から完全にロードするためには多くのリソースが必要です(一部がまだキャッシュされている場合でも):OSはアプリとそのすべての依存フレームワークをロードする必要があり、アプリの完全なスタートアップコードを再実行する必要があるなど。
DarkDust

5
スイッチャーは、メモリ上にあるかどうかに関係なく、電話でこれまでに開かれたすべてのアプリを、ある最大限度まで、それらが最後に使用された順にリストすると常に考えていました。十分にスクロールして戻ると、アプリがディスクからロードされるため、アプリに切り替えるとかなり長い一時停止が発生します。その動作のあなたの見解を確認するドキュメントはありますか?
Mジェフリーズ

7
これは便利な答えですが、iOSが50個のアプリをすべて中断状態に保つ方法はありません。ただし、それぞれのアプリが本当に微細なメモリフットプリントを持っている場合を除きます。私は大規模なアプリ(Safari、twitter、Facebook、Reddit、YouTubeなど)を1日中切り替えますが、よく使用されるリストの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リリースでの一部の不良ネットワークからの回復)またはネットワークが単に適切に応答しません。

やがて、これらの問題のほとんどは解消される傾向があり、アプリは再び動作を開始します。あなたは本当に仕事にアプリが必要な場合が、、あなたは先に行くと、それを殺すし、最初からそれを再起動することの代金を支払わなければなりません。あなたはそれをすることでより多くのバッテリーを使いましたが、ちょっと、あなたはそれを必要としました。

これが混乱を招く場合、私はあなたに車のアナロジーを与えることができます。

車のアナロジー

自動車技術が進歩したことは知っていますが、これはもはや良い例ではありませんが、ここで私と一緒に遊んでください

ただのアイドリングよりも多くの燃料を使用するために使用されていた自動車のエンジンの発射。車にインジェクターの代わりにキャブレターが付いていた場合、これはさらに悪化しました。そのため、赤信号で停止したときにエンジンを停止すると、理論的には1分間のアイドリングよりも多くの燃料を使用できます。新しい車ははるかに効率的なメカニズムを備えており、エンジンを停止できますが、半始動状態のままになります(ここではあまり車に乗り込まないでください)。

アプリを閉じると、人が信号を止めるたびに車の電源を切ることに相当します。通常、数秒後に再び必要になるまでアイドル状態にするのとは対照的です。

アナロジーは完全ではありません。実際には、アイドル状態の車は燃料を使用しますが、中断されたアプリは使用しません。しかし、携帯電話の目には、彼らはされていない(彼らは明らかに、任意の並べ替えアクティブのバックグラウンド処理を持っていない限り)何もメモリ/関連バッテリーを使用しました。

基本的に、アプリを終了するたびにエンジンをオフにし、エンジンをアイドリングさせるiOSの「スマート」メカニズムにそれを任せないので、ライトが緑色に変わったら、単にアクセルを押して、エンジンは、100%停止した場合より高速に動作しています。また、エンジンを停止状態から始動するには、燃料だけでなくより多くの電力を使用します。エンジンをクランキングし、燃料を噴射し、火花を発生させるには、スターターを回す必要があります。アプリはエンジンのようなものです。:)


1
ハハ、私はアナロジー(とあなたの答え)が好きです。:)
モノミース

コメントに関する質問re:動作不良のアプリ:「[...]本当にアプリを今すぐ動作させる必要がある場合、先に進んで、アプリを強制終了して再起動する代償を払わなければなりません。それをすることで[...]」これは普遍的にもっと無駄だと思いますか?それ以外の場合はアプリを終了しませんが、ハングアップしたりトラブルが発生したアプリは、やりたいことを繰り返し試行し失敗することで、多くのリソースを消費する可能性が高いと思います。これは、ゼロからバックアップを開始するよりも負荷が少ないと思われますが、一般的にそうだと思いますか?
brhfl

1
@brhfl言うのは難しいですが、各アプリは異なる世界です。何かが間違っているという明確な兆候がいくつかあります。ただアプリを使用しようとしている間に電話が短期間で非常に熱くなる場合、それはCPUが使用されていることを意味しているかもしれません。これらは、何かが必要以上のリソースを使用していることを示す良い兆候であり、そのような場合、疑わしいアプリを殺すことが道です。一般的に、アプリがうまく機能していなかったとしても(バックグラウンドで)中断された場合、動作する以外に選択肢はありません。またはiOSによって殺されるリスク。
マーティンマルコンチーニ

1
  1. アプリを完全に強制シャットダウンした場合、後でアプリを再度開く必要がある場合、アプリの新しいインスタンスの起動に関連するオーバーヘッドは、アプリ間で切り替えるだけではなく、CPUとエネルギーを大量に消費します。
  2. 実際にバックグラウンドで実行するようにビルドされていない限り、アプリがメモリ内にある場合、通常は一時停止または強制終了され、CPUサイクルを消費しません(通常)。かなりシンプルなアプリであれば、メモリを使用してそこに座っているだけです。このような場合、アプリの状態は後で復元できるように、アプリの状態は別の場所(Androidの場合はデバイスストレージ)に保持されます。アイデアをお伝えするために、私の携帯電話のViberアプリで書いたかなり長い未送信のメッセージは、バッテリーの消耗によりシャットダウンした携帯電話を生き延びました。電話を再起動してからViberを起動すると、メッセージが送信されるのを待っています。ハレルヤ。
  3. メモリチップに応じて、ゼロまたは1が含まれているかどうかによって、消費電力に大きな違いが生じることはありません。したがって、メモリ内にないものを保管しても、バッテリーを大幅に節約することにはなりません。
  4. アプリが非常に深いスリープ状態にある場合(皆さん、これを確認してください)、アプリへの参照のみが、アプリスイッチャーに表示され、最後に表示される前の画面のスナップショットとして表示されます。ある日、iPadのすべてのアプリを閉じることにし、閉じなければならないアプリの量に驚いたからです。60以上のアプリでした。これらをすべてiPadのメモリに保持することはできません。数か月前に使用されたアプリがいくつかありました。

たとえば、あなたの車の場合、日中にあまりにも多くの停止を行い、エンジンの停止と始動を続ける必要がある場合、バッテリーが完全に使い果たされるときが来ます。これは、停車する間に運転している間の充電時間が、エンジンを始動するたびにバッテリーから吸い出される膨大な量のエネルギーを回復するのに十分に長くない場合に発生する可能性があります。それに、スターターと全体的なガス消費量には良くありません。そのため、多くの配達用トラックの運転手は、短い停車中もエンジンをアイドリング状態に保ちます。

この類推は、メモリ節約の神話に似たIMOです。


-1

議論のために異なる意見をそこに投げるだけです。この概念にはある程度の真実がありますが、特定の数のアプリを開いてしまえば、アプリを停止したままにしておくことで収益が減少する可能性があります。

開いているアプリが多いほど、RAMが使い果たされることは明らかです。通常、メモリ内の各アプリは、アプリ自体が実際に使用しているメモリ、アプリが手元に持ちたいメモリ、およびオペレーティングシステムがアプリに実際に使用を許可したメモリとして分割されます。使用が許可されています。アプリが使用するメモリとしてこのメ​​モリの別の部分を保持する理由は、アプリがヒープを増やす必要があるかもしれませんが、ガベージコレクターにとっては悪いので、すぐにそれを行う必要はないからです大きなヒープ(大きなヒープ=長いガベージコレクション)があるため、アプリは現在使用されていないメモリの一部を確保しますが、必要に応じてアプリでのみ使用できます。

OSは私のアプリを最大700MBまで許可し、アプリセットはそのメモリのうち300MBをそれ自体のために確保し、必要に応じてアプリが使用できるように400MBを残しますが、別のアプリが開いてメモリが必要だとします。OSはすべての異なるアプリを見て、別のアプリからメモリを引き出して新しいアプリに使用してもよいかどうかを決定します。この場合、アプリから150MBをメモリを許可し、新しいアプリに与えることを決定することができます、新しいアプリのメモリを使用するためにメモリを交換する必要があります(これはビジネスでの資金の再配分と考えてください)、開いているアプリが多いほど、オペレーティングシステムが実際に決定するために必要な作業が多くなります新しいアプリのメモリを提供するために、どのアプリのメモリを吸い上げます。

この意味で、開いて一時停止するすべてのアプリはこのプロセスに複雑さを追加し、CPUを集中的に使用し、他のアプリを閉じないことで節約されるバッテリー電力よりも将来的にアプリを開くために潜在的に多くのバッテリー電力を必要とします。

ここで気を付けてください、本当にアプリを強制終了しない限り、処理能力を使い果たすバックグラウンドサービスが実行される可能性があることを考慮していません。たとえば、タイマーなどで通知するように設定された通知などです。アプリは真のバックグラウンドサービスを使用せず、実際にはfirebaseなどのサービスからのプッシュ通知を使用します。

考慮すべきもう1つのことは、アプリを継続的に開くほど、OSが通過してメモリをクリーンアップしてより効率的にレイアウトするまでメモリが最初に断片化されることです。これ自体も処理能力を消費します。アプリが占有するメモリが多いほど、このプロセスはデバイスに対してより集中的になります。

言うまでもなく、アプリを開いたままにしておくほうが、アプリをあまりにも多く開かない限り、ほとんど効率的ですが、このしきい値に達するためにいくつのアプリを開く必要があるかはわかりません。

ソース:

MonoのSGenガベージコレクター:http : //www.mono-project.com/docs/advanced/garbage-collector/sgen/

iOSとAndroidの両方のXamarinアプリのメモリプロファイラーの概要。アプリによるメモリの管理方法(ワーキングセット、プライベートバイト、割り当てられたメモリなど) https://blog.xamarin.com/say-hello-to -the-xamarin-profiler /


1
これが正しいかどうかわかりません-あなたはiOS開発者ですか?iOSは独自の裁量で、必要に応じて一時停止中のアプリを強制終了してメモリを解放できると考えていますが、一時停止中のアプリのメモリフットプリントを部分的に削減できるとは強く思います。少なくともユーザーとしては、すべてか無かのように見えます。
BradC

2
これは、完全に実行されているアプリの同時マルチタスクを行う「フル」OSに当てはまります。iOSの場合はそうではありません(新しい分割画面構成を除く)。私は私が言っていませんポジティブ私はちょうどここには適用されない場合があり、他のOS年代から、あなたの本能を言っている、あなたは間違っています。
BradC

1
そして、私見では、アプリの切り替えを「オープン」/「メモリ内」アプリのリストと混同します。これには、メモリフットプリントは非常によくスイッチャーで5つのまたは20アプリでiPhoneのために同じであってもよく、明確にそうではありません
nohillside

2
Mono / Xamarinフレームワークのメモリ管理は、iOSプラットフォームでネイティブアプリ/サービスがどのように機能するかを表すものではありません。iOSおよびObjective-C / Swiftランタイムは、ガベージコレクションを実装しません。
マイクマーツック

2
それはカウント自動リファレンスを使用しています@TrevorHart developer.apple.com/library/content/documentation/Swift/...
はMateusz Szlosek

-2

クリーンカットバージョン: 後でアクションに関する情報を収集するために、ユーザーがアプリをオン(または「一時停止」状態)にしたいところまでOSが改善されるように設計されているため、優れています[*]必要に応じて。

長いバージョン: 「一時停止」状態のアプリは状態をメモリに保存するため、一度バックアップを開始すると、すべてをロードするプロセスが必要になり、プロセスにかかる時間が短くなり、ストレージユニットをほとんど使用しなくなります...これは、アプリがバックグラウンドで他の処理を行っているかどうかを知ることができません。多くの場合、アプリはそこに座ってデータを収集します。


[*]あなたのデータの収集について詳しく説明するには...メモリに保存されているアプリは、「サスペンド」またはバックグラウンドでアクティブにすることができます。デバイスの所有者であるあなたは、CPU使用率を積極的にスキャンするための知識や他のアプリを所有していない場合、アプリが実際に何をしているのかを知ることができません。セキュリティの観点から、今後10分間は使用しないアプリはすべてシャットダウンすることをお勧めします。

PSこの練習はAndroidデバイスでも行われています...


6
-1この答えは、「お使いの携帯電話はあなたをスパイするように設計されています」というこのトーンがなかった場合により良いでしょう。
Nzall

4
「あなたの電話はあなたをスパイするように設計されています」は、Appleデバイスには実際には適用されません-彼らは個人データからお金をmakeけません。
-wizzwizz4

1
@ wizzwizz4誰が言う?
yo

1
@yo '証拠を見つけることができず、そうすることを示唆できないと言う。誠実であると仮定します。
wizzwizz4
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.