我刚刚通过Android Studio中的选项Refactor -> Move to Androidx
迁移到了androidx。
默认情况下,build.gradle
文件使用的是:
implementation 'androidx.appcompat:appcompat:1.0.0'
我在项目的许多地方都使用LocalBroadcastManager。我可以将import androidx.localbroadcastmanager.content.LocalBroadcastManager
的上述v1.0.0与androidx.appcompat
完美配合使用。但是当我将其更新为1.1.0时:
implementation 'androidx.appcompat:appcompat:1.1.0'
导入无效。我收到Unresolved reference : localbroadcastmanager
错误。
我尝试清理项目并多次重建项目,但问题仍然存在。
有解决方案吗?谢谢。
答案 0 :(得分:2)
AppCompat 1.0.0对legacy-support-core-utils
(包括localbroadcastmanager
)具有传递依赖,以便保持与最新支持库28.0.0发行版的精确兼容性。
AppCompat 1.1.0删除了该传递依赖项,现在仅依赖于所需的确切库。
因此,如果您的应用程序代码仍然需要LocalBroadcastManager
,则需要手动添加对LocalBroadcastManager的依赖关系:
implementation "androidx.localbroadcastmanager:localbroadcastmanager:1.0.0"
请注意,根据LocalBroadcastManager 1.1.0-alpha01 release notes:
androidx.localbroadcastmanager
在版本1.1.0-alpha01
中已弃用。原因
LocalBroadcastManager
是应用程序范围的事件总线,在您的应用程序中包含违反层的行为;任何组件都可以侦听来自任何其他组件的事件。- 它继承了系统
BroadcastManager
的不必要用例限制;开发人员必须使用Intent
,即使对象只生活在一个进程中,也永远不要离开它。出于同样的原因,它也不遵循功能性BroadcastManager
。这些使开发人员感到困惑。
替换
您可以将
LocalBroadcastManager
的用法替换为可观察模式的其他实现。根据您的使用情况,合适的选项可能是LiveData
或反应性流。