開発者オプションの「アクティビティを保持しない」について #325 

Androidの開発者オプションに「アクティビティを保持しない」という設定項目があります。この設定をなにか良い効果があると思って使っている人がいるようですが、やめた方が良いです。メモリは解放されますが、端末に負担がかかりますしアプリの動作にも影響しますのでデメリットしかありません。


アクティビティを保持しないについて

アクティビィというのはアプリの画面のようなものですが、「アクティビティを保持しない」を有効にするとアクティビティ(画面)が切り替わったタイミングでアクティビィは破棄されます。アプリはひとつの画面だけではなくていくつかの画面から構成されているものも多いと思います。例えば、リストを表示してタップすると詳細を表示するような造りのアプリの場合、リスト画面と詳細画面がそれぞれアクティビィです*1
*1 アプリによってはひとつのアクティビティで複数の画面を切り替えるタイプもあります。Googleのアプリはこのパターンが多いです。

リスト画面と詳細画面のアクティビティの動作を考えてみます。リスト画面から詳細画面に移行すると、リスト画面の上に詳細画面を重ねて表示しリスト画面は(画面上は見えませんが)そのままの状態で残っています。詳細からバックキーで戻ると詳細画面が破棄されリスト画面は元の通り表示されます。これがノーマルが動きです。
「アクティビティを保持しない」を設定した場合、リスト画面から詳細画面に移行した時点でリスト画面の情報は破棄されます。次に詳細画面でバックキーを押した時はリスト画面に戻るのですが、リスト画面の情報は破棄されていますので、一から再構築する事になります。画面を表示して必要なデータを読み込み各項目の値を表示する処理が必要になります。処理するためにいくらか時間がかかりますのでレスポンスが悪くなりますし、ネットから情報を取得しているアプリなら毎回通信も発生するかもしれません。また、元の画面をどこまで再現するかはアプリの作りによります。こういった状況は通常はあまり発生しないので、完全に元には戻す事はしていないかもしれません。例えば一覧を表示する画面の場合、詳細から戻る度にリストの先頭に戻ったりします。アプリによっては異常終了する事もあるかもしれませんね。

実際のアプリの動作について

「アクティビティを保持しない」を有効にしていくつかのアプリを試してみましたが、例えばTwitterでキーワード検索した場合は検索結果と詳細がそれぞれアクティビティなので、検索結果をタップして詳細を表示した後、バックキーで検索結果に戻ると毎回検索しなおすような動作をしていました。かなりレスポンスが悪い感じです。メルカリの検索画面も検索結果と詳細は別のアクティビィですが、詳細画面からバックで戻ると毎回検索結果のリストの先頭に戻っていました。

Googleの公式見解

Googleの開発者向けの情報ページには次の説明があります。複数のアクティビティ(画面)を頻繁に切り替えるアプリの場合は画面を切り替える度に再構築するので電池寿命は逆に短くなるように思います。
[アクティビティを保持しない] を有効にした場合、ユーザーがアクティビティのメインビューを離れると、すぐにそのアクティビティが破棄されるため、電池寿命が長くなります。

まとめ

「アクティビティを保持しない」を設定した場合次のようになります。
  • メモリは空きができます
  • 画面を切り替える度にアクティビティの破棄/再構築が行われるため端末の負担になります(レスポンス、バッテリ、通信に影響)
  • 破棄されたアクティビィは完全に元に戻らない事があります(アプリの作りによる)。最悪異常終了します。

※「アクティビティを保持しない」の設定は意味がないのでやめる事をお勧めします。

スポンサードリンク


コメント

コメントの投稿

この記事に対するご意見・ご感想を募集しています。
コメント内容のみ必須入力です。それ以外は任意でご入力ください。











管理者にだけ表示を許可する(再編集はできません)

トラックバック

この記事のトラックバックURL
http://zze128.blog9.fc2.com/tb.php/504-6a083361