onSaveInstanceState()被执行的场景有哪些
时间: 2024-03-30 09:33:22 浏览: 14
onSaveInstanceState()方法是Activity生命周期中的一个回调方法,主要用于保存Activity中的一些重要数据,以便在Activity被销毁后重新创建时可以恢复这些数据。具体来说,onSaveInstanceState()方法会在以下场景被执行:
1. 屏幕旋转:当屏幕由于旋转而重新创建Activity时,系统会调用onSaveInstanceState()方法来保存Activity中的数据。
2. 系统资源不足:当系统资源不足时,可能会销毁一些后台的Activity,此时会调用onSaveInstanceState()方法来保存Activity中的数据。
3. 用户按下Home键或启动新的Activity:当用户按下Home键或启动新的Activity时,当前的Activity可能会被销毁,此时会调用onSaveInstanceState()方法来保存Activity中的数据。
需要注意的是,onSaveInstanceState()方法只适用于保存一些轻量级的数据,例如Activity中的一些状态标志、用户的输入内容等,而不适用于保存大量的数据,例如图片、音频、视频等。对于大量的数据,应该采用其他方式来进行保存,例如保存到数据库或文件中。
相关问题
Android onSaveInstanceState
`onSaveInstanceState` 是 Android 生命周期中的一个方法,它用于保存 Activity 或 Fragment 中的状态。当 Activity 或 Fragment 被销毁并重新创建时,系统会调用 `onRestoreInstanceState` 方法来恢复之前保存的状态。
在 `onSaveInstanceState` 方法中,你可以将需要保存的数据存储到 Bundle 对象中。系统会在 Activity 或 Fragment 被销毁之前自动调用这个方法,并将 Bundle 对象作为参数传入。
一般来说,你应该保存那些与界面相关的数据,例如 EditText 中的文本、复选框的状态、列表中的滚动位置等等。如果你需要保存大量数据,可以考虑使用数据库或 SharedPreferences 等持久化存储方案。
需要注意的是,Bundle 对象中保存的数据应该是轻量级的,因为系统可能会将它们序列化到磁盘上,这会影响应用的性能。另外,如果你使用了 ViewModel 来管理数据,也可以考虑将需要保存的数据存储到 ViewModel 中,这样可以更方便地管理和恢复数据。
onSaveInstanceState和onRestore
InstanceState是Android活动生命周期中的两个方法,用于在活动被系统销毁和重新创建时保存和恢复活动的状态。
onSaveInstanceState()方法在活动即将被销毁前调用,它允许开发者保存活动的状态信息,通常是将一些关键的数据保存到Bundle对象中。这些数据包括用户操作的数据、活动的属性等等。这个Bundle对象会在活动被销毁后存储到系统的临时存储中,以便在活动重新创建时使用。
onRestoreInstanceState()方法在活动重新创建时调用,它允许开发者从Bundle对象中恢复之前保存的状态信息,并重新设置活动的属性。开发者必须在这个方法中判断Bundle对象是否为空,因为它可能在重新创建时没有保存任何状态信息。
这两个方法通常用于处理横竖屏切换等情况下保存和恢复活动的状态信息。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)