2011/11/04

AndroidにTask Killerは不要なのか?



17/Nov/2011

当方はTask Killerを使っていません。

その代り、各アプリの設定を細かく行い、また、root化して不要なシステムアプリを削除しています。

何故、そうしているのかを、まとめてみました。

【AndroidにTask Killerは不要なのか?】

1)ActivityとService

アプリケーションには、ActivityとServiceがあります。

Activityはフォアグラウンド(そのアプリが前面にあって、ユーザから見えたり、操作出来たりする状態)でしか動作しません。

一方、Serviceはバックグラウンドでも処理を行う事が出来ます。

2)ActivityとTask Killer

Activityはフォアグラウンドでしか動作しません。

バックグラウンド(そのアプリが背面にあってユーザから操作出来ない状態)ではスリープ状態になり、メモリは使用したままですが、動作はしていませんので、バッテリは消費しません。

また、システム全体としてメモリが不足すれば、使われない物から順に、システムが、メモリ内の情報を保存した上で、Activityを自動的に終了させていきます。

最近のAndroid OSでは、このメモリ管理プロセスが進化していますので、どのActivityをどのタイミングで終了させるかは、システムに任せておいても問題ありません。

従い、Activityについては、Task Killerを使う必要は無いと考えます。

3)ServiceとTask Killer

Serviceはバックグラウンドでも処理を行う事が出来ます。

代表的な例が音楽プレーヤです。

しかし、Serviceに処理を続けさせなくても、必要な時にシステムのアラームサービスでキックしてServiceを開始する事が出来ますので、きちんと設計されたアプリであれば、無用なリソースを極力消費しない作りになっています。

注意しなければならないのは、利用者側の設定です。

例えば、同期間隔やデータの取得間隔を極端に短くしていたりすると、無駄にリソースを消費したり、バッテリの消費が激しくなったりします。

SNSや天気予報やニュース等の同期系のアプリや、端末の状態(バッテリ残量やメモリ残量等)をチェックして表示したりするウィジェットには注意が必要です。

こうした点は、Task Kilerではなく、各アプリの同期間隔やデータの更新間隔を見直す事で改善するものです。

また、端末の販売時にキャリヤがプリインストールしたシステムアプリの中に、端末の起動と同時に自動起動するServiceもあります。

こうした物の内、全く使用しない物は、root化してシステムアプリを削除してしまうのが効果的です。

Serviceも、Activity同様、システム全体のメモリが足りなくなると、システムが自動的に終了させる事がありますが、その場合は、必要なServiceは、再度、自動的に起動されます。

Task Kilerでこうしたアプリを終了しても、自動的に復活してしまう為、終了と復活の無限ループとなり、メモリやバッテリを無駄に消費する事になってしまう場合がありますし、必要なServiceをTask Killerで強制的に終了させる事により、システムに不具合が出る可能性もありますので、逆効果になりかねません。

従い、アプリの同期設定や更新設定が適切に設定出来ていて、かつ、root化して自動起動する不要なServiceを無効化している限り、Task Killerは不要と考えます。

0 件のコメント:

コメントを投稿