あつりんの備忘録♪

日々の出来事や忘れちゃぁならん事などなど、ゆる~く書いていきます♪

アプリをKillさせずに常駐させる方法(未検証)

Android OSは動的にメモリ管理を行うことで、RAMの空き容量を確保してレスポンス低下を未然に防いでいるのだが、常時起動しておきたいアプリまでKillしてしまう弊害もある。
ホームアプリなどがいい例で、使用している「LauncherPro」(http://market.android.com/details?id=com.fede.launcher)は重いアプリを起動後ホームに戻る際にワンテンポどころか5秒近く待ちが生じたり、ウィジェットの再描写(再配置)が発生するなど、レスポンスが低下することが稀にある。またスクリーンショットを撮る際に起動させる「screenshot」(http://market.android.com/details?id=com.geeksoft.screenshot)も、いつの間にかKillされていて撮影失敗する事もちらほら・・・
それを防ぐには「AutoKiller Memory Optimizer」(http://market.android.com/details?id=com.rs.autokiller)などのメモリ管理が可能なユーザーアプリを導入しカスタマイズする位しか方法は無いのだが、これも完璧ではない。
そこでOS側でKillしたくないアプリを半ば強引に登録することで、メモリ開放時のKill除外対象にしちゃいましょう、常駐させちゃいましょうというのが今回の趣旨。例の如くroot化必須です。

  • 「/system/build.prop」まで展開。
  • 除外対象にしたいアプリケーションを以下の書式で登録(定義)する。
    • 「sys.keep_app_<通し番号>=<アプリケーションのパッケージネーム>」
    • 例えば「LauncherPro」と「screenshot」を除外対象する場合は、以下の3行を「build.prop」に書き加える。尚、「LauncherPro」等の一部ホームアプリを登録する場合には1行目必須(http://d.hatena.ne.jp/atsurin/20110704/1309748653)。

sys.keep_app_1=android.process.acore
sys.keep_app_2=com.fede.launcher
sys.keep_app_3=com.geeksoft.screenshot

ちなみに注意しなくてはいけないのは、(可能かどうかは別として)Kill除外対象を多数登録し過ぎるとロックされるメモリ領域が増えてしまい、逆にレスポンスが低下してしまうので登録件数は程々に。
さて効果の程は稼動時間が短いので何とも言えないが、自分の場合は上記に加えて、「AutoKiller Memory Optimizer」でプリセットを[Aggressive]をベースに設定することで、重いアプリを起動させた直後でも大きなストレス(ウィジェットの再描写は稀にあるが、数秒程度の待ち時間に短縮?)無くホーム(アプリ)に戻る様になり、スクリーンショットもどんなタイミングでも撮影可能になった・・・気がする・・・バッテリ消費量増加や不具合発生の可能性も考えられるので暫く経過を見守ることとするが、多分、プラセボ効果だったって結論に落ち着く気がしない訳でもない・・・