问:怎样让Fragment在屏幕转动时不销毁

2021-01-12  本文已影响0人  超级绿茶

问:当屏幕在转动时Activity内的Fragment会被销毁并重新生成,有什么办法可以让Fragment不被销毁?


dccd9cbd9b8b5e6f32038a1d43e20158.jpg

答:Fragment有一个名为setRetainInstance(boolean)的方法,如果传入的参数为true时该Fragment在转屏时是不会销毁的,但如果参数为false时才会在转屏时销毁并重建。关于这个方法有一个经典的实例,Jetpack就是利用这一原理来保障ViewModel的存活周期和Activity一样;具体作法是在Activity内实例一个Fragment,这个Fragment不需要在界面上呈现,然后再在Fragment中创建一个map集合专门用于保存我们创建的ViewModel实例,由于这个Fragment的setRetainInstance被设置为true后就不会在转屏时销毁,如此一来,保存在这个Fragment内的ViewModel的存活周期自然就和Activity一样长。

欢迎加入QQ群聊:口袋里的安卓
或关注微信公众号:口袋里的安卓

上一篇 下一篇

猜你喜欢

热点阅读