iOS でのマルチタスクの仕組みを知らない人はまだたくさんいます。ただし、最初に、これは本当のマルチタスクではなく、システムやユーザーに負担をかけない非常に賢いソリューションであることを指摘する必要があります。
iOS のバックグラウンドで実行されているアプリが動作メモリをいっぱいにし、システムの速度低下やバッテリー寿命につながるため、ユーザーはアプリを手動でオフにする必要があるという迷信をよく耳にします。マルチタスク バーには実際には、実行中のすべてのバックグラウンド プロセスのリストが含まれるのではなく、最近起動されたアプリケーションのみが含まれます。したがって、ユーザーは、いくつかの場合を除いて、バックグラウンドで実行されているプロセスについて心配する必要はありません。ホーム ボタンを押すと、通常、アプリケーションはスリープ状態になるか閉じられ、プロセッサやバッテリーに負荷がかからなくなり、必要に応じて必要なメモリが解放されます。
したがって、数十のプロセスが実行されている場合、これは本格的なマルチタスクではなく、常に 1 つのアプリケーションだけがフォアグラウンドで実行され、必要に応じて一時停止または完全にオフになります。少数の二次プロセスのみがバックグラウンドで実行されます。そのため、iOS ではアプリケーションのクラッシュが発生することはほとんどありません。たとえば、Android では、ユーザーが対応しなければならないアプリケーションが実行されすぎています。これにより、デバイスの操作が不快になる一方で、起動やアプリケーション間の遷移が遅くなるなどの原因となります。
アプリケーションのランタイムの種類
iOS デバイス上のアプリケーションは、次の 5 つの状態のいずれかになります。
- ランニング: アプリケーションが開始され、フォアグラウンドで実行されます
- 背景: まだ実行中ですが、バックグラウンドで実行されています(他のアプリケーションを使用できます)
- 一時停止中: まだRAMを使用しているが実行されていない
- 非活性: アプリケーションは実行中ですが、間接的なコマンド (たとえば、アプリケーションの実行中にデバイスをロックした場合)
- 走っていない: アプリケーションが終了したか、起動していません
邪魔をしないようにアプリがバックグラウンドに移行すると、混乱が生じます。ホームボタンを押すか、ジェスチャを使用してアプリケーション (iPad) を閉じると、アプリケーションはバックグラウンドに移行します。ほとんどのアプリは数秒以内に一時停止されます (アプリは iDevice の RAM に保存されるため、すぐに起動でき、プロセッサーにそれほど負荷がかからず、バッテリー寿命が節約されます)。アプリがメモリを使用し続けると、手動で削除して解放します。ただし、iOS が自動的に実行してくれるため、それを行う必要はありません。大量の RAM を使用するゲームなど、要求の高いアプリケーションがバックグラウンドで一時停止されている場合、iOS は必要に応じてそのアプリケーションをメモリから自動的に削除し、アプリケーションのアイコンをタップすることで再起動できます。
これらの状態はいずれもマルチタスク バーには反映されません。パネルには、アプリが停止、一時停止、またはバックグラウンドで実行されているかどうかに関係なく、最近起動したアプリのリストのみが表示されます。また、現在実行中のアプリケーションが [マルチタスク] パネルに表示されない場合もあります。
バックグラウンドタスク
通常、ホームボタンを押すとアプリケーションはバックグラウンドで実行され、使用していない場合は 10 秒以内に自動的に一時停止します。したがって、たとえばポッドキャストをダウンロードしている場合、システムはそれを実行中のアプリケーションとして評価し、終了を XNUMX 分遅らせます。遅くとも XNUMX 分後には、プロセスがメモリから解放されます。つまり、ダウンロードが完了するまでに XNUMX 分以内であれば、ホームボタンを押してダウンロードが中断されることを心配する必要はありません。
バックグラウンドで無期限に実行される
非アクティブな場合、システムはアプリケーションを 5 秒以内に終了します。ダウンロードの場合、終了は XNUMX 分間遅れます。ただし、バックグラウンドでの実行が必要なアプリケーションが少数あります。 iOS XNUMX でバックグラウンドで無期限に実行できるアプリの例をいくつか示します。
- サウンドを再生し、しばらく中断する必要があるアプリケーション (通話中の音楽の一時停止など)、
- あなたの位置を追跡するアプリケーション (ナビゲーション ソフトウェア)、
- VoIP 通話を受信するアプリケーション。たとえば Skype を使用している場合、アプリケーションがバックグラウンドにあるときでも通話を受信できます。
- 自動ダウンロード (ニューススタンドなど)。
タスク (バックグラウンド ダウンロードなど) を実行していない場合は、すべてのアプリケーションを閉じる必要があります。ただし、ネイティブのメール アプリなど、バックグラウンドで継続的に実行される例外もあります。バックグラウンドで実行している場合、メモリや CPU 使用率が占有されたり、バッテリー寿命が短くなったりします。
バックグラウンドでの無期限の実行が許可されているアプリは、音楽の再生から新しい Podcast エピソードのダウンロードまで、実行中に行うことは何でもできます。
前に述べたように、ユーザーはバックグラウンドで実行されているアプリを閉じる必要はありません。唯一の例外は、バックグラウンドで実行されているアプリがクラッシュするか、スリープから適切に復帰しない場合です。その後、ユーザーはマルチタスク バーでアプリケーションを手動で閉じることができますが、これが起こることはほとんどありません。
したがって、バックグラウンド プロセスはシステム自体が処理するため、一般にバックグラウンド プロセスを管理する必要はありません。だからこそ、iOS は非常に新鮮で高速なシステムなのです。
開発者の視点から
アプリケーションは、マルチタスクの一部として、合計 6 つの異なる状態に反応できます。
1.applicationWillResignActive
つまり、この状態は、アプリケーションが将来 (数ミリ秒以内に) アクティブなアプリケーション (つまり、フォアグラウンドのアプリケーション) としての役割を終えることを意味します。これは、たとえばアプリケーションの使用中に電話を受けるときに発生しますが、同時に、このメソッドはアプリケーションがバックグラウンドに移行する前にもこの状態を引き起こすため、これらの変化を考慮する必要があります。この方法は、たとえば、着信があるときに実行中のすべてのアクティビティを一時停止し、通話が終了するまで待機する場合にも適しています。
2.アプリケーションDidEnterBackground
このステータスは、アプリケーションがバックグラウンドに移行したことを示します。開発者は、このメソッドを使用して、必ずしもバックグラウンドで実行する必要のないすべてのプロセスを一時停止し、未使用のデータやその他のプロセスのメモリをクリアします (タイマーの期限切れ、ロードされたイメージをメモリからクリアするなど、必ずしも必要ではない、またはプロセスを閉じるなど)。アプリケーションがバックグラウンドで接続を完了することが重要でない限り、サーバーとの接続は可能です。アプリケーションでメソッドが呼び出されるとき、バックグラウンドで実行する必要がない部分がある場合は、基本的にアプリケーションを完全に一時停止するためにこのメソッドを使用する必要があります。
3. applicationWillEnterForeground
この状態は、最初の状態とは逆で、アプリケーションはアクティブ状態に戻ります。この状態は、スリープ状態のアプリがバックグラウンドから再開し、次の数ミリ秒以内にフォアグラウンドに表示されることを単に意味します。開発者は、アプリケーションがバックグラウンドにある間に非アクティブだったプロセスを再開するために、このメソッドを使用する必要があります。ユーザーがロードされたアプリケーションを再度表示する直前に、サーバーへの接続を再確立し、タイマーをリセットし、画像とデータをメモリにロードし、その他の必要なプロセスを再開する必要があります。
4.アプリケーションがアクティブになった
この状態は、アプリケーションがフォアグラウンドに復元された後にアクティブになったばかりであることを示します。これは、ユーザー インターフェイスに追加の調整を行ったり、UI を元の状態に復元したりするために使用できるメソッドです。これは実際には、ユーザーがすでにディスプレイ上にアプリケーションを表示している瞬間に行われるため、この方法と前の方法で何が起こるかを慎重に判断してください。これらは数ミリ秒の差で次々に呼び出されます。
5.アプリケーションは終了します
この状態は、アプリケーションが終了する数ミリ秒前、つまりアプリケーションが実際に終了する前に発生します。マルチタスクから手動で行うか、デバイスの電源をオフにするときに実行します。このメソッドは、処理されたデータを保存し、すべてのアクティビティを終了し、不要になったデータを削除するために使用する必要があります。
6. applicationDidReceiveMemoryWarning
最も議論されているのは最後の状態です。アプリケーションがシステム リソースを不必要に使用する場合、必要に応じてアプリケーションを iOS メモリから削除します。 iOS がバックグラウンド アプリで具体的に何をしているのかはわかりませんが、アプリが他のプロセスにリソースを解放する必要がある場合、アプリが持っているリソースをすべて解放するようにメモリ警告を表示します。したがって、このメソッドはアプリケーションで呼び出されます。開発者は、アプリケーションが割り当てられたメモリを放棄し、進行中のすべてを保存し、メモリから不要なデータを消去するなど、メモリを適切に解放するようにこれを実装する必要があります。確かに、多くの開発者は、たとえ初心者であっても、そのようなことについて考えたり理解したりしていないため、アプリケーションがバッテリ寿命を脅かしたり、バックグラウンドであってもシステム リソースを不必要に消費したりする可能性があります。
評決
これら 6 つの状態とそれに関連するメソッドは、iOS におけるすべての「マルチタスク」の背景です。これは、アプリケーションがユーザーのデバイス上で何を引き起こすか、デバイスが最小化されたり、システムから警告を受けたりした場合などに責任を負う必要があるという事実を開発者が無視しない限り、これは素晴らしいシステムです。
ズドルイ: Macworld.com
著者: ヤクブ・ポジャレク、マルティン・ドゥーベック (ArnieX)
あなたにも解決すべき問題はありますか?アドバイスが必要ですか、それとも適切なアプリケーションを見つけますか?セクション内のフォームからお気軽にお問い合わせください カウンセリング, 次回はあなたの質問に答えます。
こんにちは、本当に素晴らしい記事ですが、それに関する技術サポートはあるのでしょうか。というのは、夜寝る前に何度かバッテリーの問題を解決したのですが、たまたま Wi-Fi とモバイルデータがオフになっていたため、Wi-Fi がオフで 3G のみだった別のケースよりも時間がかかりました。
残念ながら、iOS ではアプリケーションを手動でオフにする必要があり、システムは以前のように動作しなくなります。
iPhone を Windows Phone (Samsung Omnia W for 6200,-) に置き換えましたが、システムの速度はまったく異なるレベルになりました。
Windows 8 を搭載した Metro タブレットが登場したら、iPad も買い替えることになりそうです…。
@007 – はい、古い iPhone3G と新しい WP のものを比較しているのであれば、そうです (誰がそれを予想したでしょうか?) WP はかなり高速になります。そうでなければ、カルルカに関する噂話はあなたにとってうまくいきませんし、現在のHWと比較するのは適切でした。 WP7 も購入して最終的に 4s に落ち着きましたが、WP7 とはまったく異なるレベルの使いやすさを表しています。タイルを楽しく延々とスクロールしてください。
パジャさんの意見に完全に同意
私は別の樽の破片から再び貢献したいと思います - Samsung Galaxy S と iPhone 4 - 年齢の点で同等だと思いますか? iOS 4 の時点では、Android 以外の使いやすさと速度の点で、Apple はアプリケーションの操作という概念を非常にうまく解決していましたが、同じことはもはや Android には当てはまりません。結局のところ、私は 4S に落ち着きましたが、「とにかく動作する」ので、何の不満もありません。そして、非常に速く動作します。
理論は美しいです...しかし実際には、私はまだバーでアプリケーションを閉じています ;)
ありがとう、とても面白くて、実用的で、面白くて、スイングと深みが欠けていません。この禁断のブランドに対する今日の若者の執着を著しく強調しています。しかし、彼女とこの記事に感謝します。
記事は完全に間違っています。
誤って記載されているように、ホーム ボタンを押してもアプリケーションは終了せず、一時停止します。つまり、絶対にメモリから削除したり、終了したりしないでください。実行を一時停止するだけで、iOS はこのアプリの CPU 時間を 0% にします。記事で述べられているように、iDevice メモリ内のどこも「スワップ」することはありません。アプリ切り替えができるのは本当にありがたいですね。
電話機に、優先度の高い他のアプリケーションを実行するためのメモリがほとんどない場合(通常は別のアプリケーションがフォアグラウンドで実行されている場合)、アプリケーションはメモリから削除されます。
最初のケースでは、おっしゃるとおり、翻訳ミスでした。スワップに関しては、ここではそれについて話しているのではなく、iOS デバイスのストレージ容量ではなく、動作メモリについて話しています。
アプリケーションのイメージは、コマンドによって再度呼び出されるまでの限られた期間メモリに保存されます (13,7 GB のうち 16 GB を参照: 2,3 GB はシステムおよび一時停止されたアプリケーション用に予約されています)。
したがって、ナビゲーション、スカイプなどのアプリケーションを区別する必要があり、これらのアプリケーションはバックグラウンドでもアクティブのままであり、特定の機能が終了せずに、たとえばその位置または位置情報に関するデータを送信し続けます。または、Vokul のように、pord モードでリッスンしても、マルチタスクはバックグラウンドでリッスンし続けます。
これらのアプリケーションはバッテリーを消耗するため、iOS を待たずに手動で閉じる必要があります。他のものでは必要ありませんが、アプリケーションがクラッシュした場合にのみ使用されます。
私はその記事に同意できません。分。第 1 世代 iPad (iOS 5.0.1) では、マルチタスク バーに「開いている」アプリがたくさんあるのか、それともほんの少ししかないのかが一目瞭然です。 iOS はメモリをクリーンアップしようとしますが、明らかに十分ではありません。おそらく RAM のサイズが小さいことが最大の弱点です。
そのため、使用するシステムとハードウェアに大きく依存します。iOS 1 を搭載した iPad 5.0.1 の方が第 2 世代 iPad よりも悪くなるのは当然です。
申し訳ありませんが、これは理想的な動作方法の説明です。残念ながら、現実はまったく異なり、少なくとも私と同じくらい(つまり、時々)Apple 製品を使用している人ならわかるでしょう。
「iOS のバックグラウンドで実行されているアプリが動作メモリをいっぱいにするという迷信をよく耳にします。」
それは迷信ではなく、単なる事実です。結局のところ、あなたは記事の中で自分でそれを主張しています。
「前にも述べたように、ユーザーはバックグラウンドで実行されているアプリケーションを閉じる必要はありません。」
ナンセンス。それはただのデタラメです、リンゴのプロパガンダ、怒らないでください。
「しかし、iOS が代わりにやってくれるので、そうする必要はありません。大量の RAM を使用するゲームなど、要求の高いアプリケーションがバックグラウンドで一時停止されている場合、iOS は必要に応じてそのアプリケーションをメモリから自動的に削除し、アプリケーション アイコンをタップすることで再起動できます。」
違います。状況は少し異なります。典型的な例 – バックグラウンドで実行されている要求の高いアプリケーションがあり、ゲームが必要です。ブラウザを起動し、いくつかのタブを開くと、より多くのメモリが必要になります。何が起こるか?バックグラウンドでアプリケーションを要求し続けると、逆にブラウザ自体が落ちてしまいます。要求の厳しいアプリケーションを手動で閉じれば、ブラウザは長時間問題なく動作します。
これは理論ではなく実践です。そして、Apple 製品の長期ユーザーとして、あなたがまだこのことを知らないことに私は驚きました。
ありがとう、これは非常によく説明されています。かなりお世話になりました ;-) ♥
前置きとして、Android と同様に、私は iOS に賛成でも反対でもありませんが、ここに書かれているように、「iOS ではアプリケーションのクラッシュに遭遇することはめったにない」のに、Android では奇妙な点がいくつかあります。アプリケーションはおそらく 1 年に 1 回クラッシュします: -P
http://dotekomanie.blog.mobilmania.cz/2012/02/stabilita-ios-vs-android/
はい、でもアプリケーションを手動で閉じる必要があるケースは本当に最小限です。一度くらい使用しましたか? ;-) そして、Mobilemania からの比較テストへのリンクを提供するのはまったく無意味です。Google が支払った広告について読みたいときは、そこで見ます ;-) 誰でも Android スマートフォンを手に入れることができます。つまり、システムが多かれ少なかれオーダーメイドである Galaxy Nexus を除いて、クリーンに動作することはありません。全体として、アンドロイドは悲惨だ
@Mek – 私は数年間毎日 Apple 製品を使用していますが、このようなことは一度も起こったことがないので、あなたの理論はどういうわけか機能しません。
OT:
@redakce – Web サイトが常に作業中であるか、Web サイトで何かが起こっていることがわかりますが、すべてが正常に機能するまでに 1 週間もかからないような気がします。そして、新しい外観は私には似合わないので、もうここには来ません。少なくとも私は iPhone でモバイル版を使用していましたが、今はまったく機能しません。なぜでしょうか?現在、コメント欄への投稿には応答していません。
@SteveJSF 残念ながら、物事は常に私たちが望むようになるとは限りません。答えに関しては、新しい SEO プラグインによって問題が解決されました。現在解決中です。
WP-Touch も何らかの理由でサービスを終了したため、このプラグインよりも優れたソリューションを考え出すことにしました。それでは、すぐに次のニュースを楽しみにしていてください:-)
素敵な記事です。実際の運用に関する限り、私はいくつかの点に同意し、ほとんどの場合は記載どおりに機能すると言いたいのですが、残念なことに、正しく動作しない不十分に作成されたアプリケーションがまだ存在し、次のようなケースもあります。一部の読者から指摘されました。 Skype が非常に良い例だと思います。Skype がまだバックグラウンドで実行されていることは実践でわかっています (そしてそれは問題ありませんし、そうあるべきです)。しかし問題は、このアプリケーションがデバイスのバッテリーを大幅に消耗することです。もうちゃんと見えないよ。逆に、Facebook、Badoo などのアプリケーションは、これらもまだバックグラウンドで実行されていますが、その消費はほとんど感知できません (少なくとも私は何も気づきません)。したがって、エラーは個々のアプリケーションにあると思います。どの機能がわかっていれば、それらのみを手動でオフにするだけで十分です。
したがって、Facebook は必要に応じて実行され、Skype は必要な場合にのみ実行されるのが慣例です。
一方、バッテリーを節約する必要があり、iPhone をできるだけ長く「稼働」させておく必要があるとわかっている場合は、マルチタスクで不要なものをすべてオフにしますが、ほとんどの場合、大きな影響はありません。ただし、必要に応じて、3G、すべてのモバイルインターネット、WiFi、位置情報サービス、機内モード、照明の強度などを制限します。ルーチンの一環として、マルチタスクで前述のアプリケーションもオフにします。
したがって、個人的には、この記事は真実であると思いますが、残念なことに、一部のプログラマーは、アプリケーションが間違っており、私の意見では、この問題に対する解決策は 1 つしかありません。そのため、アプリケーションを使用せずにアプリケーションを使用してこれらのことを反論する人もいます。可能であれば代替手段、または 2. それが不可能な場合は、たとえば Skype を参照し、レポートに指定されたプログラマにその旨を書き、彼らがそれについて何らかの対応をしてくれることを望みます。
アプリを手動で無効にするのは無意味かもしれませんが、それでも無効にします。また、アプリケーション システムをオフにせず、実行したまま (またはバックグラウンドでスリープ状態にしたまま) にしようとしましたが、バッテリー寿命が大幅に短くなり、約 2 週間後に iPad XNUMX を再起動する必要もあり、反応が遅かったです。そのため、アプリを手動でオフにすると、バッテリーが長持ちし、最近クリスマスの日に再起動しましたが、正常に動作しています。
ちなみに、私は Mac OS X でも同じことをしています。必要のないアプリケーションを閉じるだけです (CMD+Q)。アプリケーションがバックグラウンドでスリープして不必要に RAM を消費するよりは良いです (OS X ではこれが可能です)。あまりうまく機能しません)。私の RAM はほとんどなく、8 GB しかありませんが、7 GB の Windows 8 では、システムの応答が遅くなったり、スワップしたりしませんでした。OS X では、これはかなり一般的な現象です (コンピューターの電源を切ったことがありません。Mac でも同様です)。したがって、7 か月以上の稼働時間も例外ではありません。問題は、RAM を解放して「速度を上げる」ための予防策として Mac を再起動する必要があることです。Windows XNUMX ではこれは必要ありません)。
私はアプリケーションを実際に起動する方法にもっと興味があります。私に起こったのは、アプリケーション (特にジオキャッシング上) が親サーバーから何かをロードしている状態になり、その状態でスタックしたということです。ホームボタンは機能しましたが、再起動後、フリーズ状態(中断した状態)に戻りました。手動終了 (マルチテイスティング メニューへ、アイコンとマイナスを長押しして閉じる) = アプリケーションが消え、再起動するとフリーズした元の状態で開きました。そこですべてを閉じ、電話の電源を切り、再度電源を入れ、「ホーム」をダブルクリックすると、なんと、アプリケーションはすべて、電源を切る直前に閉じる前と同じ状態で存在していました。再起動も役に立ちませんでした。暑くなるまでホームとアッパーを保持してください。唯一役に立ったのは、電話からアプリケーションを削除し、再起動して、電話に再インストールすることでした。どういうわけか私はそれを受け入れませんでした。
このマルチタスク管理は機能しており、これらの状況に対処するかどうかは開発者の責任です。状況全体のより詳細で専門的な説明に興味がある人のために、ここでそれがどのようなものであるかを書きます。
アプリケーションは合計 6 つの状態に応答できます。これらの状態は次のとおりです。
applicationWillResignActive
アプリケーションDidEnter背景
アプリケーションはフォアグラウンドに入力します
アプリケーションがアクティブになりました
アプリケーションは終了します
アプリケーションDidReceiveMemory警告
ここで、これらの状態をさらに詳しく説明してみます。
applicationWillResignActive – この状態は、将来 (数ミリ秒以内に) アプリケーションがアクティブなアプリケーション (つまり、フォアグラウンド アプリケーション) として再任されることを意味します。これは、たとえば、アプリケーションの使用中に電話を受信したときに発生しますが、同時にこれが発生します。したがって、アプリケーションがバックグラウンドに移行する前でもこの状態がトリガーされるため、これらの変更を考慮する必要があります。この方法は、たとえば、着信があるときに実行中のすべてのアクティビティを一時停止し、通話が終了するまで待機する場合にも適しています。
applicationDidEnterBackground - このステータスは、アプリケーションがバックグラウンドに入ったことを示します。開発者は、このメソッドを使用して、必ずしもバックグラウンドで実行する必要のないすべてのプロセスを一時停止し、未使用のデータやその他のプロセスのメモリをクリーンアップする必要があります。たとえば、タイマーの期限切れ、からのクリアなどです。必ずしも必要ではないメモリにロードされたイメージ、またはアプリケーションがバックグラウンドで接続を完了することが重要ではない場合にサーバーとの接続を終了します。基本的に、アプリケーションの一部がバックグラウンドで実行する必要がない場合は、アプリケーションで呼び出されたこのメソッドを使用してアプリケーションを完全に一時停止する必要があります。
applicationWillEnterForeground – この状態は、アプリケーションがアクティブ状態に戻るときの最初の状態の逆です。このアプリケーションの状態は、単に次の数ミリ秒以内に、スリープ状態のアプリケーションがバックグラウンドから再開され、フォアグラウンドに表示される (アプリケーションがフォアグラウンドに入る) ことを意味します。開発者は、このメソッドを使用して、アプリケーションの動作中に非アクティブだったプロセスを再開する必要があります。バックグラウンドでは、サーバーへの接続が再確立され、タイマーがリセットされ、画像とデータがメモリにロードされ、ロードされたアプリケーションがユーザーに再び表示される直前に、その他の必要なプロセスが再開されます。
applicationDid becomeActive – このステータスは、アプリケーションがフォアグラウンドに復元された後にアクティブになったことを示します。これは、ユーザー インターフェイスに追加の調整を行ったり、UI を元の状態に復元したりするために使用できるメソッドです。このメソッドは実際に発生します。ユーザーがすでにディスプレイ上で見ることができる場合、この方法と前の方法で何が起こっているかを貸借対照表から判断する必要があります。これらは数ミリ秒の差で次々に呼び出されます。
applicationWillTerminate - この状態は、アプリケーションが終了する数ミリ秒前、つまりアプリケーションが実際に終了する前に発生します。マルチタスクから手動で行うか、デバイスの電源をオフにするときに実行します。このメソッドは、処理されたデータを保存し、すべてのアクティビティを終了して不要になったデータを削除するために使用する必要があります。
applicationDidReceiveMemoryWarning - これはここでよく議論される条件であり、必要に応じて、システム リソースを不必要に使用する場合、iOS はアプリケーションをメモリから削除します。 iOS がバックグラウンド アプリで何をしているのか正確にはわかりませんが、アプリが他のプロセスにリソースを解放する必要がある場合、保持しているリソースを解放するようにメモリ警告を表示します。したがって、このメソッドはアプリケーションで呼び出され、開発者はアプリケーションが持つメモリを放棄し、処理済みのデータを保存してメモリから不要なデータを削除するか、その他の方法でメモリを適切に解放するようにこのメソッドを実装する必要があります。確かに、初心者などの多くの開発者はそのようなことについて考えていないか、理解していないため、アプリケーションがバッテリー寿命を危険にさらしたり、バックグラウンドでもシステム リソースを不必要に消費したりする可能性があります。アプリケーションがメモリ警告を受け取った後に何もせず、以前と同じようにシステム リソースを消費し続けた場合、iOS がどのように動作するかわかりません。
これらのいくつかの状態とそれに関連するメソッドは、iOS の「マルチタスク」全体の背後にあります。開発者が、アプリが最小化された場合にユーザーのデバイスで何を引き起こすかについて責任を負う必要性を無視しなければ、これは素晴らしいシステムです。またはシステムから警告を受け取るなど…
この簡単な説明が、すべてをスムーズに動作させるためにアプリケーションがどのように関与しているかを理解するのに役立つことを願っています。したがって、これはユーザーの誤った使用法による間違いであるとほぼ言えます。これは次のように理解できます。アマチュア開発者によるほとんど無料のアプリケーションを多数使用すると、iOS デバイスの動作は、大規模なアプリケーションを使用した場合よりも悪くなります。経験豊富な開発者またはプロの開発者による無料および有料のアプリケーションの数。これは、両方のサークルに例外がないと言っているわけではありません。たとえば、foursquare は非常に奇妙で要求の厳しい動作をしますが、同時に、メモリとバッテリーの管理に多くの時間を費やす非常に熟練した開発者であると期待されますが、実際はその逆です。 4SQ の最大の問題はサーバーとの通信であり、頻繁にハングアップしたり負荷がかかったりすることがあります。これは、有名なアプリケーションにも問題があるという事実の一例にすぎませんが、4SQ が優れたサービスであるという事実には変わりありません。
リンゴさん、楽しんでくださいね!! :)
著者のご厚意により、記事に情報を追加しました ;-)
申し訳ありませんが、段落間のどこにでも ENTER キーが使用されていました。コメントに少なくとも少しリッチなテキスト形式を持たせるために、ここで何とかできるはずです。
ArnieX: コメントありがとうございます!!
そのファラミア: ちょうどあなたの問題についてです。あなたの場合に役立つかどうかはわかりませんが、私自身の経験から、アプリケーションを (マルチタスクで) 閉じると、閉じるまでに数秒かかることはわかっています。オフにする場合は、完全に終了するまで数秒待ってから(私は約 10 秒待ってから)、再度開始することをお勧めします。
どういたしまして ;) 貢献する機会があれば、喜んでお手伝いさせていただきます。
Meeb ではどうなるのでしょうか。ICQ または FB チャットにログインすると、10 分後に自動的にログアウトされ、オフラインになります。それとも機能し続けますか?説明してくれてありがとう:P
10 分後、アプリケーションのインターネットへの接続は単に中断されます。ただし、Meeba サーバー上ではオンラインのままであり、誰かがあなたに手紙を書いた場合はプッシュ通知を受け取ります。アプリケーションを再度開くと、すぐに接続が確立され、楽しくチャットを続けることができます。
したがって、リンクした記事を正しく理解していれば、統計はアプリケーションの起動時のクラッシュのみを示しており、これはクラッシュが発生する可能性のあるケースのかなり小さい割合です。したがって、私の意見では、この「研究」からiOSの安定性が低いと結論付けることは不可能です。さらに、Forbes から引用した記事の翻訳者は、アプリケーションのクラッシュに関するデータを提供する会社が Google などによって支援されていることを言及するのを忘れていました (「Google Ventures が支援する Crittercism...」)。