升级Android Studio 3.1至AI-173.4670197后调用getLiveData()报错求助
解决Android Studio 3.1升级后
ComputableLiveData.getLiveData()的访问限制错误 这个问题我升级AS到3.1版本时也踩过坑,本质是Arch Lifecycle库对API访问权限的管控变严格了——ComputableLiveData.getLiveData()本来就是库内部专用的方法,之前版本的AS没做强制校验,升级后开始严格执行这个限制了。
下面给你几个可行的解决思路:
1. 修正自己代码的API使用方式
如果你是在自己的代码里直接调用了getLiveData(),那说明你用错了ComputableLiveData的设计逻辑。它的正确用法是继承并重写compute()方法,由内部自动管理LiveData的创建和更新,根本不需要你手动调用getLiveData()。举个例子:
class UserProfileLiveData extends ComputableLiveData<User> { private final UserRepository repo; public UserProfileLiveData(UserRepository repo) { this.repo = repo; } @Override protected User compute() { // 在这里写你的数据计算/获取逻辑 return repo.getCurrentUser(); } }
之后直接使用这个子类的实例即可,它本身就可以作为LiveData被观察。
2. 统一Lifecycle相关依赖版本
如果错误来自第三方依赖库,大概率是你的项目里Lifecycle组件的版本不统一导致的。打开你的build.gradle(Module级别),确保所有android.arch.lifecycle相关的依赖都是同一个版本,比如:
implementation "android.arch.lifecycle:extensions:1.1.1" implementation "android.arch.lifecycle:viewmodel:1.1.1" implementation "android.arch.lifecycle:livedata:1.1.1"
同步项目后,很多这类权限问题都会自动消失。
3. 升级第三方依赖库
如果上面的方法没用,那就是你依赖的第三方库还在违规调用这个内部API。找到对应的库,查看它的最新版本,升级到适配Arch Lifecycle 1.1+的版本,一般官方维护的库都会很快修复这类兼容性问题。
内容的提问来源于stack exchange,提问作者chrome
相关产品推荐
相关产品推荐

