Androidのプロセス管理を知る
今回から2回に渡ってAndroidのプロセスについて考えてみたいと思います。
Androidはマルチタスクが可能なので、複数のアプリケーションやサービスがバックグラウンドで動いています。このため、次々とアプリケーションを切り替えて作業をしていても直前の状態を保持しているので、ユーザーは待ち時間を減らすことができ、同時にいろいろなことができるようになります。
Androidはできるだけ長い間プロセスを保持しようとしますが、メモリには当然限りがあるので、最終的にはメモリが不足してしまいます。
そこで、Androidはメモリが足りなくなってきたら、システムの判断で使ってないアプリケーションを終了させていきます。
このような特性から、プロセスの管理については基本的にシステムに任せておいて問題はないでしょう。
それでは、システムがプロセスを終了させるには、どのような優先順位があるのでしょうか?
プロセスのライフサイクル
Androidは各プロセスをいくつかの「重要度のレベル」に分類して、メモリ残量が少なくなったときに削除する順番を決定しているようです。
ユーザーがプロセスの「重要度のレベル」を知るためには、タスク管理ができるアプリケーションを使用することで知ることができます。
今回は、ASTRO File Managerというファイル管理用のアプリケーションを使って、内容を見ていきます。
ASTRO File Managerを立ち上げると、まずはファイル一覧が表示されます。(もともとファイル管理のソフトなので、こちらの機能がメインです)
「MENU」→「Tools」→「Process Manager」を選択します。
すると左記の画面が表示され、現在立ち上がっているアプリケーションやプロセスが一覧で表示されます。
(画面は自分の環境で、端末の電源を入れた直後)
項目の一番右側に表示されているテキストが、システムに判断されているプロセスの状態です。
プロセスの優先順位は以下のようになります。
1.Foreground(フォアグラウンド プロセス)
ユーザーがその時点で行っている作業に必要なプロセスで、システムはこのプロセスを削除するのは最後になります。
通常、これらのプロセスは少数なので、終了させられることはほとんどありません。
プロセスが応答しなくなった(画面がしばらくフリーズした)場合、フォアグラウンド プロセスの一部を強制終了させなければならない状況に陥っています。2.Visible(可視プロセス)
フォアグラウンドではないものの、ユーザーが見ている画面に影響を及ぼすことのできるプロセスです。ユーザーが見ている画面の直前にある、機能が動作している画面にあたります。
すべてのフォアグラウンド プロセスが動かせなくならない限り、削除されることはありません。3.Service(サービス プロセス)
サービスが保持しているプロセスです。音楽の再生やファイルのダウンロード、ホーム画面に貼っているウィジェットなどがこれに該当します。
これらはユーザーが気にかけている処理のはずですが、ForegroundとVisiableが動作するためのメモリがなくなってしまった場合には削除させられてしまいます。
4.Background(バックグラウンド プロセス)
現在ユーザーに画面を表示していない停止したプロセスで、いつでも削除させられる可能性があります。ただしシステムにメモリが十分にある場合は、このプロセスも削除しません。
消される場合にはユーザーが最近使ったものが最後に消されるような順番で消されます。すでに停止しているプロセスなので、強制終了をしてもユーザーには悪影響がありません。
5.Empty(空のプロセス)
何もしていないプロセスです。このプロセスを維持しておく理由は、キャッシュとして使用することにより次回の起動時間を短くするためです。システムはこのプロセスを一番頻繁に消します。
これらプロセスの優先順位は、実行内容を見て随時変更されるようです。
ちゃんと内容をチェックしているようなので、端末のスペックが十分にあれば完全にシステム任せでもよいと思うのはこのためです。
(参考)http://developer.android.com/intl/ja/guide/topics/fundamentals.html
次回は、実際にタスク管理系のアプリケーションを使ってプロセスを管理する方法を考えてみます。

















0 コメント (コメントはまだありません)