在Activity和多个Fragment之间共享资源

在Activity和多个Fragment之间共享资源

2023年7月7日发(作者:)

在Activity和多个Fragment之间共享资源在Activity和多个Fragment之间共享资源Android Studio 默认⽣成的代码⼀般是这样的:package import import Inflaterimport port oupimport ntimport delProvidersimport t ViewModelclass PlayUiFragment : Fragment() { override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { return e(_ui_fragment, container, false) } override fun onActivityCreated(savedInstanceState: Bundle?) { vityCreated(savedInstanceState) viewModel = (this).get(SharedViewModel::) // TODO: Use the ViewModel } private lateinit var viewModel: SharedViewModel companion object { fun newInstance() = PlayUiFragment() }}关键在于这⼀句viewModel = (this).get(SharedViewModel::)其中(this)表⽰将viewModel绑定到这个Fragment的⽣命周期(这⾥的this便表⽰当前的Fragment对象)我们可以将this改为activity,即将viewModel绑定到Fangment所在的Activity的⽣命周期上,即viewModel = (activity!!).get(SharedViewModel::)然后再相应的Activity中绑定SharedViewModel: override fun onCreate(savedInstanceState: Bundle?) { te(savedInstanceState) setContentView(ty_main) viewModel = (this).get(SharedViewModel::) initMediaBrowser() initView() }那么便可在Activity的整个⽣命周期之内和多个Fragment共享资源原理 ViewModel的⽣命周期依赖于对应的Activity或Fragment的⽣命周期。通常会在Activity第⼀次onCreate()时创建ViewModel,ViewModel的⽣命周期⼀直持续到Activity最终销毁或Frament最终detached,期间由于屏幕旋转等配置变化引起的Activity销毁重建并不会导致ViewModel重建。借⽤官⽅⽰意图来解释⼀下:这样就可以避免在Activity直接利⽤接⼝进⾏回调

发布者:admin,转转请注明出处:http://www.yc00.com/news/1688674119a161600.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信