在androidx.appcompat:appcompat:1.1.0中找不到LocalBroadcastManager,但在1.0.0中可用

在androidx.appcompat:appcompat:1.1.0中找不到LocalBroadcastManager,但在1.0.0中可用,android,androidx,localbroadcastmanager,Android,Androidx,Localbroadcastmanager,我刚刚通过Android Studio中的“重构->移动到androidx”选项迁移到androidx。 默认情况下,build.gradle文件使用: implementation 'androidx.appcompat:appcompat:1.0.0' 我在项目的许多地方使用LocalBroadcastManager。我完全可以将import androidx.localbroadcastmanager.content.localbroadcastmanager与上面的androidx.a

我刚刚通过Android Studio中的“重构->移动到androidx”选项迁移到androidx。 默认情况下,build.gradle文件使用:

implementation 'androidx.appcompat:appcompat:1.0.0'
我在项目的许多地方使用LocalBroadcastManager。我完全可以将import androidx.localbroadcastmanager.content.localbroadcastmanager与上面的androidx.appcompat v1.0.0一起使用。但当我将其更新为1.1.0时:

implementation 'androidx.appcompat:appcompat:1.1.0'
导入不起作用。我收到未解析的引用:localbroadcastmanager错误

我已经尝试清理项目,也重建项目多次和问题仍然存在


有解决办法吗?谢谢。

AppCompat 1.0.0对旧版支持核心UTIL有一个过渡依赖,其中包括localbroadcastmanager,以便与上一个支持库28.0.0版本保持精确的兼容性

AppCompat 1.1.0删除了该可传递依赖项,现在只依赖于它所需的确切库

因此,如果应用程序代码仍然需要LocalBroadcastManager,则需要手动添加对LocalBroadcastManager的依赖项:

implementation "androidx.localbroadcastmanager:localbroadcastmanager:1.0.0"
请注意,根据:

androidx.localbroadcastmanager在版本1.1.0-alpha01中被弃用

理由

LocalBroadcastManager是一个应用程序范围的事件总线,包含应用程序中的层冲突;任何组件都可以侦听来自任何其他组件的事件。 它继承了system BroadcastManager不必要的用例限制;开发人员必须使用Intent,即使对象只存在于一个进程中,并且永远不会离开它。出于同样的原因,它不遵循功能明智的BroadcastManager。 这些增加了一种令人困惑的开发人员体验

替换

您可以用可观察模式的其他实现替换LocalBroadcastManager的使用。根据您的用例,合适的选项可能是LiveData或反应流


AppCompat 1.0.0对旧版支持核心UTIL具有可传递的依赖性,该UTIL包括localbroadcastmanager,以便与上一个支持库28.0.0版本保持完全兼容

AppCompat 1.1.0删除了该可传递依赖项,现在只依赖于它所需的确切库

因此,如果应用程序代码仍然需要LocalBroadcastManager,则需要手动添加对LocalBroadcastManager的依赖项:

implementation "androidx.localbroadcastmanager:localbroadcastmanager:1.0.0"
请注意,根据:

androidx.localbroadcastmanager在版本1.1.0-alpha01中被弃用

理由

LocalBroadcastManager是一个应用程序范围的事件总线,包含应用程序中的层冲突;任何组件都可以侦听来自任何其他组件的事件。 它继承了system BroadcastManager不必要的用例限制;开发人员必须使用Intent,即使对象只存在于一个进程中,并且永远不会离开它。出于同样的原因,它不遵循功能明智的BroadcastManager。 这些增加了一种令人困惑的开发人员体验

替换

您可以用可观察模式的其他实现替换LocalBroadcastManager的使用。根据您的用例,合适的选项可能是LiveData或反应流


我懂了。但我的应用程序大量使用LocalBroadcastManager。现在不可能切换到其他版本。不需要切换到任何其他版本-作为一个未绑定的库,1.0.0版本将一如既往地发挥作用。在构建新的特性时,我们需要考虑的是,也许有比本地广播经理更好的方法。但我的应用程序大量使用LocalBroadcastManager。现在不可能切换到其他版本。不需要切换到任何其他版本-作为一个未绑定的库,1.0.0版本将一如既往地发挥作用。在构建新的特性时,需要考虑的是,可能有比本地广播管理器更好的方式来做事情。