可以通过LiveData在ViewModel中观察Activity的生命周期,从而获取Activity的引用。 publicclassMyViewModelextendsViewModel{privateMutableLiveData<Activity>activityLiveData=newMutableLiveData<>();publicvoidsetActivity(Activityactivity){activityLiveData.setValue(activity);}publicLiveData<Activity>getActivity(){returnactivityLiveD...
在上述示例中,MainActivity 实现了 ActivityCallback 接口,并将自身实例传递给了 MyViewModel,使得 MyViewModel 可以通过回调方法获取到 MainActivity 实例,从而实现了在 ViewModel 中获取 Activity 对象的需求。 通过使用接口回调,我们可以在 ViewModel 中获取到所需的 Activity 对象,并在其中执行与视图相关的操作。这种...
与Activity或Fragment的生命周期不同,ViewModel 会在配置变更后继续存在,这意味着即使发生如屏幕旋转这样的配置变更,ViewModel中的数据也不会丢失。ViewModel通过ViewModelProvider与Activity或Fragment关联,并依赖于宿主组件的生命周期来获取数据。 ViewModelProvider viewModelProvider = new ViewModelProvider(this); MyViewModel ...
){super.onViewCreated(view,savedInstanceState)valuserListView=view.findViewById<RecyclerView>(R.id.user_list)userListView.layoutManager=LinearLayoutManager(requireContext(),LinearLayoutManager.VERTICAL,false)// 通过requireActivity获取Activity的ViewModelvalviewModel=ViewModelProvider(requireActivity()).get(User...
ViewModel 能在 Activity(Fragment) 在由于配置重建时恢复数据的实现原理是:Activity(指 support library 中的 ComponentActivity) 会将 ViewModelStore 在 Activity(Fragment) 重建之前交给 ActivityThread 中的 ActivityClientRecord 持有,待 Activity(Fragment) 重建完成之后,再从 ActivityClientRecord 中获取 ViewModelStore...
在Activity中调用 class MainActivity : AppCompatActivity() { //创建ViewModel对象 private val userInfoViewModel: UserInfoViewModel by lazy { UserInfoViewModel() } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) ...
//在Activity中更新数据ViewModelProviders.of(getActivity()).get(AViewModel.class). updateUser();2.ViewModel绝对不要持有下列引用1.view2.Lifecycle3.其他任何可能持有Activity Context的类的引用 3.ViewModel中使用Context如果ViewModel需要Applicaiton的Context(为了获取系统服务),该如何处理?自定义一个类,继承自...
Android 中不同的 activity 中实现共用一个 ViewModel 在实际开发过程中,一个activity_A会根据另一个activity_B的改变而做出相应的变化,联想到利用viewmodel+livedata天生具有监听功能实现,在viewmodel中存放一个livedata变量,在需要改变的activity中添加对livedata的监听,实现上述想法。
首先在Activity中使用ViewModel时,不能直接new出来一个对象,这样的话完全起不到在配置更改时保存数据的作用。取而代之的是用ViewModelProvider类来获取一个ViewModel对象。例如已经写好了一个MainViewModel用来保存MainActivity类中的数据,那么在MainActivity中获取其实例的方法可以是: ...