最近はそうでもないのかもしれませんが、Androidに限らずモバイル向けアプリってメモリ節約のために裏側にまわるといつ落ちてもおかしくない状況になるものですよね。 そんな状態に対応する方法として、Androidは、ActivityのOnSaveInstanceStateメソッドを使うみたいです。
保存先は、BundleというクラスでPutというメソッドでデータを保存して、Getというメソッドでデータを取得できる。ということで、超簡単なコードはこんな感じになるっぽい。
using Android.App; using Android.OS; using Android.Widget; using System; namespace App10 { [Activity(Label = "App10", MainLauncher = true, Icon = "@drawable/icon")] publicclass MainActivity : Activity { private DateTime createdTime; protectedoverridevoid OnCreate(Bundle bundle) { base.OnCreate(bundle); if (bundle == null) { this.createdTime = DateTime.Now; } else { this.createdTime = DateTime.ParseExact(bundle.GetString("createdTime"), "yyyy/MM/dd HH:mm:ss", null); } SetContentView(Resource.Layout.Main); var label = this.FindViewById<TextView>(Resource.Id.Main_LabelTimeStamp); label.Text = this.createdTime.ToString("yyyy/MM/dd HH:mm:ss"); } protectedoverridevoid OnSaveInstanceState(Bundle outState) { outState.PutString("createdTime", this.createdTime.ToString("yyyy/MM/dd HH:mm:ss")); base.OnSaveInstanceState(outState); } } }
これで、Activityがメモリ不足とかで消えても、復帰時にちゃんと値が復活するという寸法。