たていすのメモ2読者になるたていすのメモ2この広告は、90日以上更新していないブログに表示しています。初期化と終了処理Activityはバックグラウンド状態になったり画面を回転させたりすると一時的に破棄/復元される事がある。プロセスごと一時的に破棄される場合もあるので、例えばstatic変数に状態を保存しても復元の際にそれが維持されているとは限らない。初期化処理と終了処理を書く際に破棄と復元を考慮するには以下のような工夫が必要になる。onRestoreInstanceState()あるActivityが作成された時に、それが最初に作られたのか、一時的に破棄された後に復元されたのかはonCreateの引数がnullかどうかで切り分けられる。設定したものと同じ内容になる。isFinishing()はfalseを示す。アプリケーションレベルの状態の管理もしあなたのアプリAで「アプリ単位の状態管理」を実現したいなら、まずはAndroidはアプリ単位の起動状態なんて管理していないことを知っておいて欲しい。何も指定しない場合、アプリAに含まれるActivityは別のアプリBの画面スタックの末尾に積まれることもあるし単独の画面スタックに積まれることもある。公式ドキュメントのタスクアフィニティについての記述を参照。http://developer.android.com/guide/components/tasks-and-back-stack.html#Affinitiesそれでもアプリケーションレベルの状態を管理したいなら、以下の手法が使えるかもしれない。指定するこの状態でそのActivityのonCreate()が呼ばれて、それが復元ではない(Bundle引数がnull)場合、その時点でアプリ単位の状態を初期化していい。アプリケーション単位の状態の保存と復元これだけだとプロセスごと破棄された場合に状態が失われてしまうので、アプリ単位の状態をフラッシュメモリに保存する仕掛けを入れる。画面スタックの底にあるアクティビティとそこから呼び出される子アクティビティの全てに以下のような記述を行う。state);}この方法には問題もあって、外部から呼び出せるアクティビティが1個に限られてしまうし、それが呼び出されるたびにアクティビティの画面スタックのルート以外の部分が全て一旦クリアされてしまう。アプリ単位の揮発性の状態を管理する、もっとイイ手法があれば誰か教えてください。10はてなブログをはじめよう!tateisuさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。