« | »

2014.01.27

Androidのアプリキャッシュ・・・消してますか?

AndroidはマルチタスクOSなのでバックグラウンドに色々なアプリやウィジェットが起動しています。

ただそのアプリの管理方法はちょっと独特で、PCに慣れている人がAndroid(iPhone含む)を障って一番違和感を感じるのが、明確にアプリの終了という機能を持っているアプリが少ないということ。

iPhoneはホームボタンを二度押すことで現在バックグラウンドで動作しているアプリが一覧で見ることが出来、アプリを明示的に終了させることが出来ます。 実はAndroidでもこの機能はアプリキャッシュとし実装されているのですが、あまり詳細が伝わっていないように思います。

 

Androidではメモリ残量が少なくなると利用頻度の低いバックグラウンドアプリをOSが判断して自動的にアプリを終了させているからアプリには終了ボタンなどが装備されていない・・・と解説されます。 これはアプリキャッシュのエントリーでもっとも古いものが削除されているということで、逆にアプリキャッシュにある間はOSがアプリの動作を維持させようとします。

 

よくメモリが足りない時や動作が重いときの対応策としてタスクキラー系アプリが紹介されていますが、このタスクキラーアプリを盲目的に使用するのはあまり意味が無いと思います。 それはアプリキャッシュに残っているアプリをOSが再起動したりしますので余計にメモリフラグメンテーションを発生させてメモリを圧迫したり、CPUに余計な処理を実行させてしまいバッテリーを消費します。(車でいうところの頻繁なアイドリングストップはエコじゃないというのと同じです。)

おとよもタスクキラー系アプリとしては、Memory Boosterを使用していますが、最近はほとんど使用することはありません。

どちらかといえばアプリキャッシュを削除して、バックグラウンドで動作しようとしているアプリを終了 or 沈静化させるほうがメモリやバッテリー的には最善と最近思っています。

 

たとえば、VoIP電話のFUSION SMARTalkアプリを例にアプリキャッシュの影響を見てみます。

 

SMARTalk利用の方には見慣れた画面ですね。

ホームボタンを押してアプリから抜けるか、メニューから終了を選んでホームに戻ります。

そしてアプリから抜けた後のステータスバーを見てみると、SMARTalkの受話器アイコンが青色になっています。

 

ステータスを確認すると、

 

SMARTalkの動作としては通信はプッシュモードになっているようですが「省電力待機中」となっています。

つまりアプリは終了せずに待機していることになります。

アプリキャッシュを見てみると、

 

SMARTalkはダイヤラー画面になっています。

つまりアプリはダイヤラーボタン入力で待機しているということになります。

どのOSでもそうですが、ボタン入力待機というのは意外にCPUを食います。

入力したキー情報を画面に即座に反映する必要があるため、ソフト的にはシステムコール一発でもシステム的には結構忙しい処理です。

実際この状態で待機しているとSO-02Fのバッテリー使用量が1-2%は上昇します。

それくらいシステムに負荷をかけているということになります。

 

ではこのキャッシュにエントリ画面で、全アプリ終了を選択してキャッシュからアプリを追い出します。

 

すると、SMARTalkの受話器アイコンが青色から暗黄色に変化します。

 

ステータスを確認すると、

 

アプリが停止してプッシュ待機となっています。

ステータスバーにアプリがアイコンを表示していますので、アプリとしては最低限の機能は常駐していますがそれ以上の動作はしていません。(SMARTalkのオプション指定でこのステータスバーのアイコンを消して完全アプリ終了にする方法もありますが、こうするとプッシュからの呼びかけにアプリ起動が遅れてしまい受信動作が不安定になる場合があります。)

 

この状態ですと、SMARTalk自体はほとんどCPUに負荷を発生させていません。

先の記事でもこの状態でバッテリー消費の測定を行い、Battery Mixのプロセス監視でもシステム負荷としてはかなり下位にランクされていました。

 

このようにアプリキャッシュに実行状態のアプリが登録されていると、そのアプリが待機状態であっても待機としてのシステム負荷は裏で発生していますので、スマホのメモリ節約やバッテリーの節電には使い終わったアプリはアプリキャッシュから完全削除がより効果的と思います。

 

Trackback URL

Comment & Trackback

No comments.

Comment feed

Comment





XHTML: You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">