【Jetpack更新之Fragment】setRetainInstance 被弃用,那么 fragment 是如何保存状态的?...

随着Android Jetpack的更新,`setRetainInstance`方法已被弃用。官方推荐使用SaveState、ViewModel等API来保留Activity、Fragment和Navigation的状态,以避免内存泄漏并保持逻辑一致性。本文探讨了Fragment状态保存的新方法,并提到了相关资源供进一步学习。
摘要由CSDN通过智能技术生成

我们都知道 fragment 中的 setRetainInstance 用于控制是否在 activity 保留 fragment 实例,具体内容可参见 WanAndroid 的每日一问:Fragment 是如何被存储与恢复的?

但是该方法已于 androidx fragment 1.3.0-alpha01 弃用了

老规矩,我们查看一下 commit log

简单概况一下

SetRetainInstance 尝试在 activity 重建时保存状态。但它带来了很多副作用。

随着 ViewModel 的引入,开发者拥有一个特定的 API,用于保留与 Activity,Fragments 和 Navigation 相关联的状态。这使开发者可以使用正常的,不需要保留 fragment ,从而在保存单个需要的属性时避免了常见的泄漏源,并且可以销毁保存的状态(即 ViewModel 的构造器和 onCleared 回调)

详情可参见 【背上 Jetpack】绝不丢失的状态 androidx SaveState ViewModel-SaveState 分析 和 【背上 Jetpack 之 ViewModel】即使您不使用 MVVM 也要了解 ViewModel ——ViewModel 的职能边界

从这个改动可以看出官方正致力

### 回答1: androidx.fragment.app.fragmentAndroid Jetpack中的一个类,用于创建和管理Fragment。它是一个抽象类,需要通过继承来创建具体的FragmentFragmentAndroid应用程序中的一部分,可以在Activity中嵌入多个Fragment,实现更加灵活的UI设计和交互。使用androidx.fragment.app.fragment可以方便地管理Fragment的生命周期、UI布局和交互逻辑。 ### 回答2: androidx.fragment.app.fragmentAndroid开发中Fragment组件的一个类,它是在Android Support Library中提供的,早期的Android版本并没有原生的Fragment组件,需要通过Support Library来实现。 Fragment是一种可重用的UI组件,可以看做是Activity中的一部分,可以在同一个Activity中切换多个Fragment来实现不同的UI布局和交互方式。相比于Activity,Fragment具有更灵活的UI组合和生命周期管理的能力,可以实现更复杂的UI交互设计。 androidx.fragment.app.fragment类提供了一些重要的方法,比如onCreateView(),onStart(),onStop()等,这些方法可以被开发者重写来实现自定义的UI布局和逻辑处理。同时,Fragment也具有独立的生命周期,可以和Activity共同管理生命周期,确保Fragment和它所依附的Activity在同一生命周期内都能正确地运行。 使用androidx.fragment.app.fragment可以让开发者实现更加灵活的UI设计和交互方式,为Android应用的开发提供了更加丰富的工具和手段。同时,由于androidx.fragment.app.fragment已经被纳入到AndroidX库中,可以很好地与其他库和框架进行集成,具有更好的兼容性和稳定性。 ### 回答3: androidx.fragment.app.fragmentAndroid开发中的一个重要组件,用于实现应用程序的界面模块化。 fragment可以看作是Activity中的一个UI组件,而且可以重复使用,使得应用程序更容易维护和扩展。通过将Activity中的界面切分成多个小模块,来实现更高效的UI重用,并且避免同时管理多个Activity带来的复杂性。 在使用fragment时,需要在activity的布局文件中定义fragment的视图容器。然后,在activity中通过FragmentManager来操作fragment,包括添加、删除、替换、隐藏、显示等操作。 一个fragment可以拥有自己的生命周期,可以响应用户事件,可以与其它fragment通信。可以使用fragment之间的接口来传递信息。同时,可以通过FragmentTransaction来管理fragment状态,该对象可以执行添加、删除、替换等操作。如果需要在Fragment之间进行数据交换,可以使用Bundle来进行传递。 androidx.fragment.app.fragmentAndroid开发中常用的场景包括: 1. 在单个activity中使用多个fragment来展示复杂的UI。 2. 在多个activity中复用相同的界面模块,实现UI样式和功能的统一。 3. 将UI逻辑切分成不同的Fragment,便于团队协作和模块化开发。同时,也便于将应用程序进行抽象和拆分,使得应用程序更加易于维护和扩展。 总之,androidx.fragment.app.fragmentAndroid开发中非常重要的一个组件,可以用于实现复杂的界面布局和应用程序的模块化开发。通过合理的应用,可以提高开发效率和用户体验,同时也可以增加应用程序的可维护性和可扩展性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值