Androidの現在実行中のアプリのリストからアプリをスワイプすると、アプリケーションとデータは正確にどうなりますか?調査しながら読み進めてください。
今日の質疑応答セッションは、コミュニティ主導のQ&AWebサイトのグループであるStackExchangeの下位区分であるAndroidEnthusiastの好意で行われます。
質問
Android愛好家の読者であるEldarerathisは、ホームボタンを使用して実行中のアプリのリストを表示し、右にスワイプして閉じることができるアプリスワイプ機能に興味を持っています。
Ice Cream Sandwichの最近のアプリリストでは、アプリをリストからスワイプして完全に削除する機能が追加されました(私が知る限り、これはバニラ機能であり、CM /カスタムROM機能ではありません)。ドキュメントとプラットフォームのハイライトは、この機能の内部的な仕組みをカバーしていないようですが、システムが実際に何をしているのか知りたいです。
さらに好奇心をかき立てて、簡単なテストを行うことにしました。CM9インストールでMusicを起動し、その後バックアウトしました。次に、最近のアプリリストを確認したところ、実際にそこにあることがわかりました(サムネイルに基づいて適切な状態になっています)。それから私は入りました
設定->アプリケーション強制的にミュージックアプリを停止しましたが、それでも最近のリストにリストされていたため、バックグラウンドで残っているプロセスとは関係がないと思いました。音楽は悪い選択だったかもしれないことに気づき、私はUSATodayアプリでもテストしました。これは基本的に同じ動作を示し、最近のアプリリストのサムネイルはこれを反映していませんでしたが(これは理にかなっています)、強制停止後に「再起動」を強制されたようです(キャッシュされていると思いますか?)。
では、最近のリストからアプリをスワイプすると、OSレベルで実際に何が起こるのでしょうか。アプリのデータをRAMからクリアし、ガベージコレクションして、保存された状態を破棄するだけですか?
アプリをリストからスワイプすると、正確には何が起こっているのでしょうか。
回答
AndroidEnthusiastの寄稿者であるAustinMillsは、次のような洞察を提供しています。
最近のアプリリストからアプリをスワイプするのはバニラであり、そうです、十分に文書化されていません。これは、さまざまなAndroidフォーラムでかなりの量の議論が行われているトピックです...コンセンサスは最もよく説明されているようです ここにいくつかのコメントで :動作はアプリを閉じるのと似ていますが、まったく同じではありません。一般に(明示的な戻るボタンの処理を定義していないアプリの場合)、アプリケーション内から十分な回数ヒットして終了するのと同じです。それ。
リンクには詳細がいくつかありますが、全体としてはアプリケーションを終了することと考えることができます。
音楽アプリに固有のサービスを開始すると思いますので、タスク自体(音楽アプリ/ UI)が閉じていても、サービスはバックグラウンドで実行され続け、タスクが原因で音楽が突然停止することはありません。メモリ管理の理由でクリアされました。それはあなたが見たものに影響を与えたかもしれません。
次に、質疑応答のサークルオブライフに参加して、Eldarerathisは、答えを締めくくるために独自の調査を行いました。
Googleの従業員からの説明につながる魔法の検索用語を見つけたようです。具体的には、最近のリストから何かをスワイプするとどうなるかをDianneHackbornが説明している場所をいくつか見つけました。最初は 彼女のGoogle+投稿の1つへのコメント :
[W]これは、最近のタスクをスワイプして削除したときに特に発生します。(1)アプリケーションのバックグラウンドまたは空のプロセスを強制終了します(を参照)。 ここに これが何を意味するのか)、および(2)新しいものを使用する 火 削除されたタスクについてアプリケーションのサービスに通知し、適切と思われることを実行できるようにします。
彼女も ブログコメントのメモ :
実際、最近のタスクのエントリを削除すると、そのプロセスに存在するバックグラウンドプロセスがすべて強制終了されます。サービスが直接停止することはありませんが、タスクが削除されたことを確認して、停止する必要があるかどうかを判断するためのAPIがあります。これは、たとえば電子メールアプリの最近のタスクを削除しても、電子メールのチェックが停止しないようにするためです。
本当にアプリを完全に停止したい場合は、最近のタスクを長押ししてアプリ情報に移動し、そこで強制停止を押すことができます。強制停止とは、アプリを完全に強制終了することです。すべてのプロセスが強制終了され、すべてのサービスが停止され、すべての通知が削除され、すべてのアラームが削除されます。明示的に要求されるまで、アプリを再度起動することはできません。
したがって、要約すると、リストからアプリをスワイプすると、最初にアプリのすべてのバックグラウンドプロセスが強制終了され、次に
onTaskRemovedバックグラウンドタスクが削除されたことをアプリに通知します。その時点で何が起こるかを決めるのはアプリ次第のように見えるので、技術的にはそこにあると思います ではありません その時点を超えてアプリに何が起こるかについての厳格なルール。