LoginSignup
4
1

More than 1 year has passed since last update.

PersistableBundleとは。

Posted at

出会い

onCreate()内に書いているコードには問題ないはずなのに、画面が表示されない。。。
なぜだ。と思ったら!
PersistableBundleを使用していたからでした。

PersistableBundleって何?

API21から追加された新機能です。
Bundleと似ていますが、persist(持続する)という言葉からもわかる通り、
永続的に保存することができます。
また、Bundleはカスタムを含めたあらゆる種類のデータを含めることができるのに対して、
PersistableBundle決めれた種類のデータしか対応していません。

データの種類一覧
- Int
- Int[]
- Long
- Long[]
- Double
- Double[]
- String
- String[]
- Boolean
- Boolean[]
- PersistableBundle
- null

使用方法

 override fun onSaveInstanceState(
        outState: Bundle, 
        outPersistentState: PersistableBundle
    ) {
        super.onSaveInstanceState(outState, outPersistentState)
    }
override fun onRestoreInstanceState(
        savedInstanceState: Bundle?,
        persistentState: PersistableBundle?
    ) {
        super.onRestoreInstanceState(savedInstanceState, persistentState)
    }

の二つのメソッドと組み合わせて呼び出されます。
そして、AndroidManifestの該当Acticityの欄に

AndroidManifest.xml
<acticity
android:persistableMode=”persistAcrossReboots”>
</activity>

を記述してActivittyのデータを永続的に保存できるようにする必要があります。

最後に

上記に則らずに使用したため、当たり前機能しなかった。。。
こんな初歩的なミスですごく悩みました。
天才エンジニアへの道はまだまだ遠いですね!
※理解に誤りや補足事項があればコメントしていただけるととても嬉しいです!

参照

https://developer.android.com/guide/topics/manifest/activity-element?hl=ja
https://developer.android.com/reference/android/os/PersistableBundle

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1