请问android中从Application派生出来的类,是否也有 onSaveInstanceState 和 onRestoreInstanceState 之类的方法? 以使得其被切换到别的app再切换回来时,其成员变量可以恢复?
不是的,从Application派生出来的类没有 onSaveInstanceState 和 onRestoreInstanceState 这两个方法,因为 Application 并不是一个 Activity,也不会被回收或者重新创建。
Application 是整个应用程序的入口点,在应用程序启动时创建,并且在整个应用程序的生命周期中一直存在,因此不需要保存或恢复其状态。
如果你想要在你的应用程序中保存或者恢复数据,可以考虑使用 Android 提供的其他机制,比如 Shared Preferences,数据持久化或者传递数据给后台处理等方式。如果你想在 Activity 中保存或恢复数据,可以使用 onSaveInstanceState 和 onRestoreInstanceState 方法。
从Application
派生出来的类是全局的单例对象,它不会被销毁和重建,因此不需要实现onSaveInstanceState
和onRestoreInstanceState
方法。
这两个方法是用于在Activity被销毁和重建时保存和恢复状态的。
如果你需要在应用程序中保存和恢复状态,可以考虑使用SharedPreferences
或者其他持久化方案。
从 Application
派生出来的类,并没有 onSaveInstanceState
和 onRestoreInstanceState
方法。这是因为 Application
本质上并不是一个活动(Activity),而是整个应用程序的全局上下文,生命周期与整个应用程序保持一致,其成员变量也不会因为切换到其他 APP 而丢失。
如果您需要保存和恢复数据以响应系统配置更改(如旋转屏幕),则可以使用 onConfigurationChanged()
方法或 android:configChanges
属性在 AndroidManifest.xml 文件中定义需要处理的配置更改类型。对于非配置更改事件,您可以考虑将数据保存到持久化存储中,例如 SharedPreferences 或数据库中,在恢复时读取并初始化数据。
需要注意的是,如果您的应用程序被系统杀死,则 Application
的所有对象的状态都将丢失,并且尚未保存到永久存储中的数据也将消失。因此,为了确保应用程序恢复到正确的状态,您应该及时将数据保存到持久化存储中。
从Application派生出来的类是全局的应用程序对象,它的生命周期通常是整个应用程序生命周期的一部分,而不是单个Activity的生命周期。因此,从Application派生出来的类不会像Activity一样调用onSaveInstanceState和onRestoreInstanceState方法。这两个方法是用来保存和恢复Activity状态的。
如果你想要在应用程序切换到后台或被销毁时保存全局数据,可以考虑使用以下方法之一:
将全局数据保存到文件或数据库中
你可以将全局数据保存到文件或数据库中,这样在应用程序被销毁或切换到后台时,数据仍然可以被保留。当应用程序再次被打开时,你可以从文件或数据库中读取数据,并将其还原到全局对象中。
将全局数据保存到SharedPreferences中
SharedPreferences是Android中一种轻量级的数据存储方式,可以用于存储应用程序的配置信息和其他简单的数据。你可以将全局数据保存到SharedPreferences中,这样在应用程序被销毁或切换到后台时,数据仍然可以被保留。当应用程序再次被打开时,你可以从SharedPreferences中读取数据,并将其还原到全局对象中。
需要注意的是,在使用任何一种方式保存全局数据时,你需要确保数据的一致性和正确性,以避免数据被损坏或丢失。同时,你也需要考虑内存占用和性能问题,以避免内存泄漏和程序运行缓慢的问题。
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!