2012年7月9日月曜日

続・振る舞いのよいAndroidアプリのために。StateSaver。

以前公開したBundleへの状態保存を自動化するBundleSaverをバージョンアップしました。
GitHub / monochromegane / BundleSaver



  1. BundleSaverから "StateSaver" へ
  2. StateSaverの使い方

  1. BundleSaverから "StateSaver" へ

前バージョンのBundleSaverの考え方、利用手順はこちらをご覧ください。
振る舞いのよいAndroidアプリのために。BundleSaver。

前バージョンでは、状態の保存先として、Bundleを対象としていました。
しかし、Bundleへ保存された状態は、アプリが生存する間しか保存されません。
アプリ終了後も状態を利用するには、何らかの手段を用いて永続化する必要があります。

今回、BundleSaverは「状態保存」の責務を果たすため、状態の永続化もサポートするように機能拡張を行いました。
また、それに伴い、プロダクト名をBundleSaverから "StateSaver" へ変更します。

なお、永続化の手法としては、Preferenceを採用しました。


  2. StateSaverの使い方

BundleSaverからStateSaverになるに伴い、利用するメソッドやアノテーションが変更になっていますが、基本的な利用手順は今までと同様です。
(念のため旧メソッド関連も非推奨メソッドとして残しています。)

変数の宣言時に、アノテーションで状態保存の対象であることを記載してください。
このとき、保存先がBundleかPreferenceかで指定するアノテーションを切り替えます。
なお、両方に保存したい場合、アノテーションを2つとも指定すればよいです。




対象となる型は、Bundle、Preferenceに格納できるもの + αです。
プリミティブ型、ラッパーオブジェクト、Bundle, Parcelable, Serializable などが格納できます。
詳しくはGitHub上のREADMEをご覧ください。


対象となるインスタンス変数にアノテーションをつけるだけで、保存/復元処理はStateSaverを呼ぶだけなので、使いやすくなるんじゃないかと思います。
また永続化対応によって簡易な設定等の保存/復元にも対応したので、実装がシンプルになるメリットもあると思います。

状態の保存/復元は地味ですが、ユーザ側にとって振る舞いのよいアプリケーションをつくるのに重要な処理なので、ぜひ使ってみてください。

-------------------------
ここはこうした方がよいよとかご指摘ありましたら、教えてもらえれば幸いです。
GitHubのPullRequestもお待ちしております。

ではでは。

0 件のコメント:

コメントを投稿