AIDL,接口回调,EventBus,广播接收器?

时间:2017-01-19 09:04:58

标签: android interface ipc aidl event-bus

创建音乐播放器。有一项服务可以在后台播放音乐 对于服务活动以及从服务到活动的哪种机制,我应该使用?现在我正在使用绿色机器人EventBus和AIDL。在EventBus哪个更好?我的应用程序工作正常,但问题是同时多次点击导致应用程序中的ANR。

.

3 个答案:

答案 0 :(得分:1)

EventBus,接口回调都是不错的选择。请勿使用广播接收器。

现在对于ANR,请你分享一些代码,你在哪里/如何处理事件。然后尝试预处理后台线程中的大部分数据,然后跳转到主线程,只是实际播放/暂停/跳过等。

PS:如果您正在使用Handler在MainThread上实际执行某些操作,请尽量不要一次性发布所有内容,在msg / runnables之间运行一段时间。它可能会在按钮点击时稍微延迟,但不会冻结您的活动/服务。

你可以在这里参考Otto:http://square.github.io/otto/

答案 1 :(得分:0)

如果您的服务和活动在同一个过程中,您不应该使用AIDL,B​​roadCast Receiver也没有任何意义。您可以使用IntentService来实现此功能。

答案 2 :(得分:0)

添加另一个选项,因为一段时间以来,Otto事件总线现在已被弃用,转而支持RxJava。 我建议尝试使用RxJava,因为它为Thread交换提供了更多的灵活性和透明性,并且还提供了大量的设置或功能操作,使代码更美观,因此可维护:)

有一种不同之处在于,您无法轻松地将提供的流外部的事件发布到已订阅的消费者。

为此,您可以尝试RHub启用此“总线”功能。

您可以查看example app