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条)