升级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
相关产品推荐
相关产品推荐

