最近はそうでもないのかもしれませんが、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")] public class MainActivity : Activity { private DateTime createdTime; protected override void 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"); } protected override void OnSaveInstanceState(Bundle outState) { outState.PutString("createdTime", this.createdTime.ToString("yyyy/MM/dd HH:mm:ss")); base.OnSaveInstanceState(outState); } } }
これで、Activityがメモリ不足とかで消えても、復帰時にちゃんと値が復活するという寸法。