エボログ

どうにも動きがモッサリするXperia A2でやった事

記事作成日:2015年6月1日

Android端末全般的に言える事なのですが、アプリの内部処理も、画面処理も、何でもかんでもCPUで処理させようとしているせいでかなり重くなっている印象があります。
昔のSoCだとGPUが非力で、画面描画を全てGPUに任せる事が出来なかったのでCPUを併用する仕様なのは納得なのですが、GPUに十分な性能がある最近の端末に対してもこの設定が当てられてしまうのは非常に勿体無い気がしています。

実際に使ってみると分かるのですが、色々なアプリをインストールし、バックグランドで動くタスクが増えてくると”何のアプリも立ち上げてないつもり”の状態でも、画面遷移が鈍かったり、スクロールがカクついたり体感的な問題が出てきます。

この問題はXperia A2はもちろん、Xperia Z3、Galaxy S4、Nexus 5等のフラグシップ端末(最新機種ではありませんが)でも同様の問題が起きています。
しかし、この問題は設定次第で解決出来るかもしれません。

尚、今回の設定はAndroidの開発者オプションを使います。また、2D/3Dゲームや独自のUI(Android標準のUIではない物)を使用しているアプリを使う場合は何かしらの不具合を発生させる可能性があるので、要注意です。(万が一挙動がおかしくなっても設定を元に戻せば良いだけだと思いますが)

という訳で、私がXperia A2(SO-04F)で行った事は下記の通りです。
ちなみに、私のXperia A2はAndroid 4.4.2(最新バージョン)にアップデートしています。
2015-06-01 10.22.14

開発者オプションから行った設定

  • GPUレンダリングを使用にチェック
  • HWオーバーレイを無効にチェック
  • アクティビティを保持しないにチェック

この3点。
これだけでかなり改善されました。

具体的にどういう仕組なのかを説明すると・・・

GPUレンダリングを使用にチェックを入れる

2015-06-01 10.22.45

キャプションとして「2D描画にGPUを常に使用する」とありますが、具体的に言うと一般的な画面表示を全てGPUで処理させるという事です。
ロック画面、ホーム画面やアプリの画面。基本的に全て2D描画になります。

もちろん、ホームアプリによっては3Dを使っている物もありますし、ライブ壁紙では3Dで処理される物もあります。
アプリも3Dゲームはもちろん3Dで処理されますし、2Dゲームでも処理速度を上げるために最初からGPUを使わせてたりあえて3Dの平面オブジェクトとして扱っている物もあったりします。

そういった物を除いて基本的にアプリの画面は2Dで作られています。

こういった2D処理を普段、AndroidはCPUで処理させています。
その為、例えばアプリを起動させる時はアプリを起動するのに必要な様々な処理(設定の読み込み、解析、初期化、画面描画、etc…)を全てCPUで行う事になるのですがその画面描画の処理をGPUに任せ、CPUの負荷を減らす事が出来ます。

その為、アプリの起動速度が上がり、起動した直後の操作性も上がります。
コンマ数秒程度の、ほんの僅かな速度向上ですが、これだけでも「サクサク動くようになった!」と感じると思います。

HWオーバーレイを無効にチェックを入れる

2015-06-01 10.23.14

キャプションには「画面合成に常にGPUを使用する」とありますが、ここで行っている「画面合成」とは、アプリのページ遷移時にあるフェードイン、ズームイン等のアニメーションの事です。
まあ、画面上に2つの画面がレイヤーに分かれて表示される場合の処理ですね。

この処理をGPUに任せる事で、CPUは「次に表示される画面の内容を処理する」という仕事に専念出来ます。
こちらも先述の「GPUレンダリングを使用」とだいたい同じで、アプリの起動速度と起動した直後の操作性が向上します。
また、画面遷移後のアプリ操作も良くなりますね。

もちろんこちらもほんの僅かな変化です。

アクティビティを保持しないにチェックを入れる

2015-06-01 10.23.23

iOSもAndroidも、WindowsやMacで言う「アプリを終了させる」という事が基本的に出来ません。
アプリを終了させたつもりでも実は”凍結”されてるだけで、メモリやCPUのリソースを僅かに食い続けている可能性があるのです。

そういったアプリが1個や2個であれば全く問題ないのですが、沢山のアプリを起動させ、終了(凍結)させ~を繰り返してるとかなりのアプリ数になり、どんどん重くなります。
スマホを長時間使い続けてるとどんどん重くなる気がするのはこれが原因になってる事が多いです。

一応、Androidの場合はタスク管理アプリ等を使って、アプリの終了を明示的に行ったり、端末を再起動するなどをすれば可能なのですが、いちいちそういう作業をやるのは面倒くさいですよね。

この「アクティビティを保持しない」にチェックを入れる事で、アプリが非アクティブになったタイミングで強制的に終了(メモリ上から開放)させられます。

これだけ聞くと一見「デフォルトでチェック入っててもいいじゃん」と思える設定ですが、これにチェックを入れるとバックグラウンドで動くはずの一部のアプリが動かなくなる可能性があるのと、編集途中のメールやLINE等の書き込みが消滅してしまう可能性もあります。

アプリによっていはメモリ上だけではなくアプリ内のデータベースに編集途中のデータを格納しておくなど、色々対策している物もあるようなのですが、編集途中の物が消えるリスクがある点には注意が必要です。
「プレイ中のゲームをポーズ状態にしてたら最初からになった」という事も起こり得ますね。
「通信中にホーム画面に戻って別の作業してたら通信に失敗してた」なんて事も起こり得ますね。

まあ、「本来なら裏側で動いてるはずの事が出来なくなる」というリスクがある訳です。

私の場合はゲームもやらなければ、一時的に編集画面から抜けたくなるような長文メールをスマホを使って書くことも無いので、この設定をしていても特に不便は感じませんでした。

という訳で、こんな所です。

尚、私はやっていませんが、アニメーションの速度を上げたり、バックグラウンドプロセスの上限を設定したりと他にも色々Androidを軽くする方法はあります。
アニメーション速度を上げるのはあんまり好きじゃないので、やっていないのと、バックグラウンドプロセスの上限を設定しちゃうのは、何かあった時に不便を感じる気がしたのでやっていません。

そもそも暫く使っていない物は「アクティビティを保持しない」にチェックを入れているので勝手にメモリから開放してくれるので不要かな?とも思ってます。

0117c5e3280f7df11d89b063089489a98b1f4dddd7