AndroidJava创建ViewModel新api
- 开源代码
- 2025-08-25 03:03:02

背景
项目使用Java,创建ViewModel发现之前旧api不管用了。不要问为什么项目还要用Java,别问。老项目不让升级。
ViewModel创建新方式新方式是因为依赖新版本库,其实用旧版本库就回到旧方式了。 依赖:
def lifecycle_version = "2.5.0" // ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version" // LiveData implementation "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个参数。
AndroidJava创建ViewModel新api由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“AndroidJava创建ViewModel新api”