あつりんの備忘録♪

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

ホームアプリのoom値変更と反映(解決)

各種アプリケーション起動後にホームアプリに戻った際、アクティビティがメモリから開放されてしまい、ウィジェット再配置などが行われる等の処理が行われる事から、ホームアプリが完全表示・操作可能になるまで数秒待たされるなどのタイムラグが発生するのは周知の事実。空きメモリの最適化の過程でホームアプリがKillされるのはAndroid 2.3のデフォルトと思われるが、非常にストレスを感じる。
それを防ぐべく、ホームアプリをメモリ開放時のKill除外対象に登録(http://d.hatena.ne.jp/atsurin/20110830/)したり、そもそもメモリ不足に陥らなくするべくメモリ最適化ツールの導入(http://d.hatena.ne.jp/atsurin/20110831/)を行ったりしたが、根本的な解決に至っていない。
最も有効的な方法として、OSのシステムが値づけを行っているoom値(Out Of Memory値 : 空きメモリが少なくなった際に開放されるアプリケーションのプライオリティを決定する値で、値が大きいほどKillされ易い)を低く設定する事で、ホームアプリがバックグラウンドに回った際にKillされる順位が低くなり優先的に開放される事が無くなる(完全にKillされない訳ではない)のだが、以前に設定変更してみたものの我が環境下では設定そのものが反映されず、半ば諦めていた次第。
さて、先日(http://d.hatena.ne.jp/atsurin/20110926/)久々に「XPERIA arc」の初期化及びシステムの再構築を行い、今日までに各種アプリケーションの設定もほぼ終了したのだが、当然ホームアプリがKillされやすい状況は改善されること無く、使いづらい事この上ない。そこで根本的な見直しが必要と考え精査したところ、目に留まったのがタスク切り替えアプリの「Task Switcher」(https://market.android.com/details?id=com.shisho.taskswitcher&feature=related_apps)だ。
現在「Task Switcher」をOSとホームアプリの間に噛ますことで、タスク管理の利便性を高めているのだが、要は「Task Switcher」がホームアプリを事実上管理していることから、ホームアプリのoom値を低く設定したとしても「Task Switcher」がその効果を妨げていると想像できる。そこで「Task Switcher」をアンインストールし、OSが直接ホームアプリを管理する様にした上でoom値の設定を以下の通り実施してみた。尚、oom値設定はデフォルトで設定されるレンジ幅を「1」に固定すると同時に、OSがその値を変更できなくすることがポイント。また、例の如くroot化必須。

  • 「/system/build.prop」まで展開。
  • 以下の書式を登録(定義)する。

ro.HOME_APP_ADJ=1
ro.HOME_APP_MIN_ADJ=0
ro.HOME_APP_MAX_ADJ=1

大正解!ホームアプリも落ちる事が無くなり今のところ非常にいい感じ。今までのストレスが嘘みたいだ♪調べてみたところ、確かに我がホームアプリである「LauncherPro」(http://market.android.com/details?id=com.fede.launcher)のoom値が「1」(「LauncherPro」の場合、「android.process.acore」がプロセス)になっており、反映が確認できた。

まさかアプリを噛ましていたのが悪かったとは盲点だが、時間が掛ったが一応は解決。後は「AutoKiller Memory Optimizer」(http://market.android.com/details?id=com.rs.autokiller)などの設定も見直して、更なる安定化を図ろうと思う。