当前位置: 首页> 科技> 数码 > 资阳网站建设公司_公司网站制作苏州_竞价托管是啥意思_网络营销网课

资阳网站建设公司_公司网站制作苏州_竞价托管是啥意思_网络营销网课

时间:2025/7/17 16:17:40来源:https://blog.csdn.net/u013076551/article/details/145709922 浏览次数:0次
资阳网站建设公司_公司网站制作苏州_竞价托管是啥意思_网络营销网课

背景

项目使用Java,创建ViewModel发现之前旧api不管用了。不要问为什么项目还要用Java,别问。老项目不让升级。

ViewModel创建新方式

新方式是因为依赖新版本库,其实用旧版本库就回到旧方式了。
依赖:

    def lifecycle_version = "2.5.0"// ViewModelimplementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version"// LiveDataimplementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version"// Lifecycles only (without ViewModel or LiveData)implementation "androidx.lifecycle:lifecycle-runtime:$lifecycle_version"

从2.4开始换新方式,当然传递参数更容易了。

public class LauncherViewModel extends ViewModel {private static final String TAG = "LauncherViewModel";public static final ViewModelInitializer<LauncherViewModel> initializer = new ViewModelInitializer<>(LauncherViewModel.class,creationExtras -> {return new LauncherViewModel();});
}    

传递参数的案例:
也可以参考传递参数,变得简单了

public class MyViewModel extends ViewModel {public MyViewModel(MyRepository myRepository,SavedStateHandle savedStateHandle) { /* Init ViewModel here */ }static final ViewModelInitializer<MyViewModel> initializer = new ViewModelInitializer<>(MyViewModel.class,creationExtras -> {MyApplication app = (MyApplication) creationExtras.get(APPLICATION_KEY);assert app != null;SavedStateHandle savedStateHandle = createSavedStateHandle(creationExtras);return new MyViewModel(app.getMyRepository(), savedStateHandle);});
}

初始化:

MyViewModel myViewModel = new ViewModelProvider(this,ViewModelProvider.Factory.from(MyViewModel.initializer)
).get(MyViewModel.class);

没错,就是这样,比之前多了2个参数。

关键字:资阳网站建设公司_公司网站制作苏州_竞价托管是啥意思_网络营销网课

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: