gpt4 book ai didi

android - 基于 API 级别的 GreenRobot EventBus 订阅

转载 作者:太空狗 更新时间:2023-10-29 13:44:22 29 4
gpt4 key购买 nike

我正在尝试订阅 EventBus 事件。由于 API 级别 23 及以下级别不存在父类,我处于需要有条件地订阅所述事件的情况。

我意识到,通过使用构建变体,可以解决这个问题,但我很好奇是否有更优雅的解决方案。 @RequiresApi 注释似乎没有任何效果(也许堆叠注释没有按我预期的方式工作)。

一些简化的示例代码:

class MyClass : OtherClass() {
@Subscribe(threadMode = ThreadMode.MAIN)
fun onSomeEvent(someEvent: SomeEvent) {
// do some stuff
}
}

假设 OtherClass() 仅在 API 级别 24+ 中可用,应用程序将在 Dalvik 或 ART 意识到生成的 EventBusIndex< 后立即卡在较低 API 级别的启动画面上 引用了一个损坏的类。

最佳答案

您可以尝试稍微调整 MyClass 以将订阅移动到另一个对象:

class MyClass : OtherClass() {
val subber = Subber()

fun onSomeEventForRealz(someEvent: SomeEvent) {
// do some stuff
}

inner class Subber {
@Subscribe(threadMode = ThreadMode.MAIN)
fun onSomeEvent(someEvent: SomeEvent) = onSomeEventForRealz(someEvent)
}
}

您还需要调整您的 subscribe()unsubscribe() 调用以传入 subber 而不是 MyClass 实例本身。

关于android - 基于 API 级别的 GreenRobot EventBus 订阅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57152027/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com