下面是一个简单的序列图,展示了在 Android 中使用 ViewModel 的流程: Activity创建 ViewModel返回 LiveData设置数据数据更新 总结 通过使用 ViewModel,我们可以更好地管理和保持界面相关的数据,提高应用的性能和用户体验。在 Java 中使用 ViewModel 非常简单,只需继承 AndroidViewModel 类,并在 Activity 或 Fragment 中获...
在你的 Activity 或 Fragment 中,可以使用ViewModelProvider得到 ViewModel 实例。 importandroid.os.Bundle;importandroidx.appcompat.app.AppCompatActivity;importandroidx.lifecycle.Observer;importandroidx.lifecycle.ViewModelProvider;publicclassMainActivityextendsAppCompatActivity{privateCounterViewModelcounterViewModel;@Over...
因此LiveData 和RxJava 之间如果只能选择一个的话, 我没有任何理由选择 LiveData ViewModel ViewModel 中有一个功能让我十分惊艳, 也十分好奇, 它可以使 ViewModel 以及ViewModel 中的数据在屏幕旋转或配置更改引起的 Activity 重建时存活下来, 重建后数据可继续使用, 这个功能十分实用且十分重要, 因为之前也没有一个...
public void onViewCreated(View view, Bundle savedInstanceState) { ensureModelDataIsLodaded(); } private void ensureModelDataIsLodaded() { if (!mViewModel.isLoaded()) { mViewModel.loadAsync(); } } public void showShortToast(String text) { Toast.makeText(getActivity(), text, Toast.LENGTH_S...
在早期的Android开发中,由于应用相对较小,页面相对简单,我们会将数据请求、页面UI处理和数据加载全部放在Activity或Fragment中进行,但是随着项目的迭代,...
// Activity中的使用classViewModuleActivity:AppCompatActivity(){overridefunonCreate(savedInstanceState:Bundle?){super.onCreate(savedInstanceState)setContentView(R.layout.activity_view_module)// 获取ViewModel实例valuserModel=ViewModelProvider(this).get(UserModel::class.java)// 利用livedata实现双向绑定userModel...
4.使用ViewModel类保存界面状态 https://developer.android.google.cn/topic/libraries/architecture/viewmodel 在笔记三中介绍MVC架构模式时提到过MainActivity.java文件扮演着controller的角色,用于显示界面数据、对用户操作做出响应或处理操作系统通信。如果要求界面控制器也负责从数据库或网络加载数据,那么会使类越发膨胀。为...
这里OneFragment中我们通过ViewModelProviders.of(activity!!).get(SharedViewModel::class.java)来进行SharedViewModel的获取,这里需要注意的就是of的参数给的是Fragment所绑定的Activity,因此它的生命周期就以Fragment绑定的Activity作为参照对象了。Fragment的创建销毁对SharedViewModel没有任何影响。
ViewModel 的源码分析 本次创建项目是升级Android Studio为 3.2.1,所以直接将项目中的依赖包替换成 androidx 下面的对应包,主要配置如下: 代码语言:javascript 复制 // gradle 插件dependencies{classpath'com.android.tools.build:gradle:3.2.1'}// ViewModel and LiveData 版本def lifecycle_version="2.0.0"implemen...
{FactoryProvider.providerAppsFactory(requireContext())}overridefunonActivityCreated(savedInstanceState:Bundle?){//---2---viewModel=ViewModelProviders.of(this,FactoryProvider.providerAppsFactory(requireContext())).get(AppsViewModel::class.java)//---3---viewModel.apps.observe(viewLifecycleOwner,Observer{//...