iOSアプリはバックグラウンドで実行されますか?


15

たとえば、iPhoneにダースのゲームとユーティリティをインストールし、次にWhatsApp、WeChat、Lineなどのチャットアプリもインストールしたとします。

  1. iPhoneが再起動すると、これらすべてのアプリも起動して、貴重なプロセッサ時間とシステムリソースを消費する可能性がありますか?

  2. アプリを起動し、ホームボタンを明示的にダブルタップしてから、アプリをスライドアウト(終了する場合)するとどうなりますか。それまたはその一部は、現在または後でバックグラウンドで実行できますか?

  3. WhatsApp、WeChat、Line、Facebookメッセージはすべて新しいメッセージを通知してくれるので、iPhoneを再起動するとすぐに実行されるようです。彼らは私のCPUをバックグラウンドで使用していますか?また、[設定]で[アプリの更新]をオフにしも、アプリがバックグラウンドで実行されている可能性があります。本当?

大きな懸念の1つは、Angry Birdsのすべてのバリエーション、いくつかのカジノルーレットゲーム、およびすべてのCut the Ropeバージョンをインストールし、それらを削除する必要がないことです(電話には128GBのストレージがあります)。次に、これらのアプリはすべて、iPhoneの再起動時に実行されるのでしょうか、それともランダムに実行され、プロセッサ時間とシステムリソース(RAMなど)を占有するのでしょうか。


1
ここで知っておくべきことすべてについて非常に長いガイドを投稿しました。
フクロウスワイプ2016

私の答えは役に立ちましたか?それを受け入れるか、何が悪いのか教えてください。:)
owlswipe 2016

回答:


29

Appleは、アプリをバックグラウンドで実行する方法とタイミングについて非常に厳しいガイドライン定めています。

以下は、サードパーティのiOSアプリがバックグラウンドでCPUを使用できる唯一のシナリオです。

バックグラウンドフェッチ

どのアプリでも、「バックグラウンドフェッチ」(バックグラウンドアプリの更新)を使用して、コンテンツをバックグラウンドで数秒間、1日に1回(iOSで制御されている時間枠で、開発者の制御外で)フェッチできます。バックグラウンドフェッチはバッテリーとCPUをほとんど消費せず、主にニュース/天気/ソーシャルメディア/メールアプリでフィードを更新して、アプリを開いたときに完全に古くならないようにするために使用されます。

オーディオ、Voice over IP、Bluetooth通信

アプリがバックグラウンドでオーディオを再生する場合(AirPlayまたは電話のスピーカーを介して)、iOSは音楽の再生を停止するまでバックグラウンドでの実行を許可します。アプリがバックグラウンドでデータベースの電話(WhatsappやSkype通話など)を行うことを許可している場合、通話中はCPUを使用してアクティブな状態を維持できます。アプリがBluetoothアクセサリと通信する場合(PebbleアプリがPebble Smartwatchと通信する場合など)、アプリはバックグラウンドで永続的に起動したままになることがあります。

ニューススタンドのダウンロード、リモート通知

ニューススタンドアプリ(主要なニュース組織であることがAppleによって承認され、App Storeのニューススタンド部分に表示される限り)は、バックグラウンドで新しいコンテンツをダウンロードすることが許可されます。アプリの外で生成された通知(ニュース速報など)を表示する必要があるアプリ(ニューヨークタイムズアプリなど)は、バックグラウンドで起動したままにして、そのような「リモート」通知を受け取ることができます。

場所の更新

アプリが「常に」現在地を使用することを許可する場合(つまり、バックグラウンドで)、バックグラウンドでいつでもアクティブにすることができます。Facebook、Find Friendsなどのアプリは、これを使用して位置関連の情報を更新しますが、他のアプリはこれを使用して、バックグラウンドでタスクを実行するためにそれを不正に使用することができます(ただし、特に位置情報へのアクセスをユーザーに許可した場合のみ)。


非常に一般的な誤解は、それを殺すためにアプリの「スワイプすると、」バックグラウンドで動作してからそれを停止することである:これは完全に真実ではありません。上記の7つの理由のいずれかがバックグラウンドで動作するアプリは、「スワイプ」に関係なくバックグラウンドで動作できます。これらの7つの理由のいずれかがないアプリは、そうでない場合は動作できません。あなたがそれらを殺さなくても、画面上で。

もう1つの誤解(ご存知のようです!)は、「バックグラウンドアプリの更新」をオフにすると、アプリがバックグラウンドで動作しなくなることです。実際、これはアプリがバックグラウンドフェッチを使用できないようにするだけですが、バックグラウンドアプリの更新の切り替えに関係なく、他の6つの理由の1つでもある場合は、バックグラウンドで動作できます。


インストールしたアプリは、CPU、メモリ、バッテリー、またはデータをバックグラウンドで使用していますか?簡単に見つけられます!SettingsiPhoneでにアクセスし、Batteryセクションを見つけて確認してください。アプリの名前の下に「バックグラウンドアクティビティ」と表示されている場合、そのアプリはバックグラウンドでCPUを使用しています。それ以外の場合は、バックグラウンドで何も実行されていません。

スクリーンショットの例を次に示します。

ここに画像の説明を入力してください

このiPhoneでは、Podcastはバックグラウンドで動作していますが、他のアプリでは動作していません。バッテリー設定に入ると、Angry Birdsがバックグラウンドで実行されているかどうかを簡単に確認できます。


したがって、質問に直接回答するには:

iPhoneが再起動すると、これらすべてのアプリも起動して、貴重なプロセッサ時間とシステムリソースを消費する可能性がありますか?

バックグラウンドで動作するように特別に構成されている場合にのみ、iPhoneのバッテリー設定で動作しているかどうかを確認できます。

アプリを起動し、ホームボタンを明示的にダブルタップしてから、アプリをスライドアウト(終了する場合)するとどうなりますか。それまたはその一部は、現在または後でバックグラウンドで実行できますか?

はい。たとえば、Facebookが(それと同じように)位置情報サービスを使用している場合、上にスワイプしてFacebookアプリを強制終了しても、バックグラウンドでの位置情報の使用が停止されることはありません。背景も。

WhatsApp、WeChat、Line、Facebookメッセージはすべて新しいメッセージを通知してくれるので、iPhoneを再起動するとすぐに実行されるようです。CPUをバックグラウンドで使用していますか?また、設定でアプリの更新をオフにしても、アプリがバックグラウンドで実行される可能性があります。本当?

Whatsapp、WeChat、Line、ハングアウト、FB Messenger、その他のチャットアプリは、時々remote notificationsバックグラウンドで新しいメッセージをチェックする機能を使用します。これは予想される動作であり(また、[バッテリーの設定]で、アプリごとのバッテリー使用量を確認することで、ユーザーが実行している量を確認できます)、バッテリーの消耗が多すぎないはずです。そして実際、アプリはバックグラウンドフェッチではなくリモート通知を使用してバックグラウンドで動作するため、これらのアプリのアプリの更新をオフにしても効果はありません。


TL; DR:アプリはバックグラウンドで携帯電話のリソースを使用できますアプリがどの程度実行しているかを確認できますSettings-> Battery


情報源:


2
それはかなり良いです...これについてのリファレンス/ソースを引用できますか
非極性2016

2
@太極者無極而生すべての情報は、iOS開発者としての私の個人的な知識からのものですが、私の回答の下部にいくつかのソースを追加しました。
owlswipe 2016

1
すばらしい答えです。雑学として、AppleはiOS 7で強制終了されたアプリのリモート通知を無効にしましたが、すべてのアプリを強制的にイジェクトした人は通知を受け取らないと不満を言ったため、iOS 7.1または7.2に戻されました。

2
@フォン私はそれが好きです、私はそれを知りませんでした!ありがとう。
owlswipe 2016

3
アプリがバックグラウンド実行を使用できるかどうかに関係なく、強制終了することは正しくありません。Apple on BE:「[iOS]はアプリを再起動しません...ユーザーが強制終了します。1つの例外は位置情報アプリです... iOS 8以降... [それ以外の場合]ユーザーは明示的に起動するか、再起動する必要があります...アプリが[iOS]によって自動的にバックグラウンドで起動される前。」
tubedogg 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.