View.BaseSavedState

View.onSaveInstanceStateの戻り値、View.onRestoreInstanceStateの引数には、Parcelableなオブジェクトが当てはまるのだが、View.BaseSavedStateを継承したオブジェクトを適用するのが最も一般的らしい。
(Bundleでも方法はあるらしいのだが、今回はView.BaseSavedStateを使う。)

View.BaseSavedState  |  Android Developers
Activity, Fragment, CustomView の使い分け - マッチョなActivityにさよならする方法 -
fragmentの状態保持について - うさがにっき
勉強中: Viewの状態を保存する

activity_main.xmlで、

前回と同様でButtonあり。
CustomSavedState.javaで、

基本的にParcelableの実装。
CustomView.javaで、

保存する時は、super.onSaveInstanceStateの戻り値を、CustomSavedStateのコンストラクタ引数に渡して生成。
そこにテキストをセットして戻り値で返す。
復元する時は、stateをCustomSavedStateにキャストして、css.getSuperStateをsuper.onRestoreInstanceStateにセット。
あとはstateの各テキストをもらってinvalidateで更新。

MainActivity.javaで、

Buttonを押してのテキストのセットも実装。

この状態から始まる
この状態から始まる

この状態から始まる。
Buttonを押すと、

テキストがセットされる
テキストがセットされる

テキストがセットされる。
回転させても、

保存復元されている
保存復元されている

テキストは、保存、復元されている。

Sample/android/View.BaseSavedState/View.BaseSavedState/src/View.BaseSavedState at master · bg1bgst333/Sample · GitHub