Android中事件广播的SDK设计
我正在编写一个SDK,它在事件发生时广播一个动作 这些事件在后台服务中捕获 我有三个选择Android中事件广播的SDK设计,android,android-service,Android,Android Service,我正在编写一个SDK,它在事件发生时广播一个动作 这些事件在后台服务中捕获 我有三个选择 全球广播一个意图 在当地广播一个意图 使用setComponent 首先 第一种方法的问题是,如果一部手机有两个或两个以上的带有SDK的应用程序,那么它将开始突然运行并引发问题。 因此,选项1被划掉了 秒 本地广播必须通过代码注册,即使用活动。 这种方法的问题是,如果应用程序被终止或未运行,我将无法接收事件 第三 我用setComponent做了一个小POC,但我无法接收广播事件。广播接收器在清单文件中注册
这种方法的问题是,如果应用程序被终止或未运行,我将无法接收事件 第三 我用setComponent做了一个小POC,但我无法接收广播事件。广播接收器在清单文件中注册为已接收
总之,我的要求是,我的事件将由后台服务生成,并且无论应用程序正在运行或暂停,我都应该能够在应用程序中接收这些事件。您拥有第四个,并且可能是最佳选择:使用 发送消息(可以是任何POJO类实例) 要接收消息,请执行以下操作:
EventBus.getDefault().register(this);
// This method will be called when a SomePojoClass instance is is posted
@Subscribe
public void onEvent(SomePojoClass event){
Toast.makeText(getActivity(), event.getMessage(), Toast.LENGTH_SHORT).show();
}
就这么简单 您拥有第四个,可能是最佳选择:使用 发送消息(可以是任何POJO类实例) 要接收消息,请执行以下操作:
EventBus.getDefault().register(this);
// This method will be called when a SomePojoClass instance is is posted
@Subscribe
public void onEvent(SomePojoClass event){
Toast.makeText(getActivity(), event.getMessage(), Toast.LENGTH_SHORT).show();
}
就这么简单 事件总线是否适用于API 11或之前的Android版本,即低于Android 2.3的版本?@VaibhavRanglani,我没有看到任何关于API级别的限制。通过链接或google自己仔细检查它。EventBus似乎不是来自Android SDK的类。你能指出它是图书馆的一部分吗。谢谢@VaibhavRanglani AFAIR事件总线不使用任何特定于Android的东西。这是一个纯Java实现。API 11上或之前的Android版本(即低于Android 2.3)是否可以使用事件总线?@VaibhavRanglani,我没有看到关于API级别的任何约束。通过链接或google自己仔细检查它。EventBus似乎不是来自Android SDK的类。你能指出它是图书馆的一部分吗。谢谢@VaibhavRanglani AFAIR事件总线不使用任何特定于Android的东西。这是一个纯Java实现。“这种方法的问题是,如果应用程序被终止或未运行,我将无法接收事件”--如果应用程序被终止或未运行,您的服务将被终止或未运行,因此没有事件。@commonware,如果终止应用或应用未运行,则可以运行服务。由于服务是应用的一部分,因此,如果包含服务的应用未运行,则服务未运行。当没有活动正在运行时,服务可能正在运行,但有活动!=应用程序。“这种方法的问题是,如果应用程序被终止或未运行,我将无法接收事件”--如果应用程序被终止或未运行,您的服务将被终止或未运行,因此没有事件。@commonware,如果终止应用或应用未运行,则可以运行服务。由于服务是应用的一部分,因此,如果包含服务的应用未运行,则服务未运行。当没有活动正在运行时,服务可能正在运行,但有活动!=应用程序。