You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级androidx.lifecycle至2.8.1遇AndroidViewModelFactory报错求替代方案

替代AndroidViewModelFactory的解决方案

升级androidx.lifecycle:lifecycle-viewmodel到2.8.1版本后,AndroidViewModelFactory无法被解析,你可以用以下两种方案替代:

方案一:使用ViewModelProvider内部的AndroidViewModelFactory

直接调用ViewModelProvider.AndroidViewModelFactory.create()方法创建工厂实例,替换原来的AndroidViewModelFactory.getInstance()调用:

public final class CameraXLivePreviewActivity extends AppCompatActivity {

    @Override
    protected void onCreate( final Bundle savedInstanceState ) {

        new ViewModelProvider(
                this,
                ViewModelProvider.AndroidViewModelFactory.create(getApplication())
            )
            .get( CameraXViewModel.class )
            .getProcessCameraProvider()
            .observe(
                this,
                provider -> {
                    cameraProvider = provider;
                    bindAllCameraUseCases();
                } );

    }

}

方案二:省略手动指定工厂(推荐)

如果你的CameraXViewModel是AndroidViewModel的子类,且构造函数仅接收Application参数,ViewModelProvider的默认工厂已经能自动完成实例化,无需手动指定工厂,代码可简化为:

public final class CameraXLivePreviewActivity extends AppCompatActivity {

    @Override
    protected void onCreate( final Bundle savedInstanceState ) {

        new ViewModelProvider(this)
            .get( CameraXViewModel.class )
            .getProcessCameraProvider()
            .observe(
                this,
                provider -> {
                    cameraProvider = provider;
                    bindAllCameraUseCases();
                } );

    }

}

新版lifecycle库中,默认的DefaultViewModelProviderFactory已支持识别AndroidViewModel类型,并自动传入Application实例完成初始化,无需额外配置。

内容的提问来源于stack exchange,提问作者user1034461

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 04:16:00