广播不同消息类型的服务

时间:2012-03-12 14:37:43

标签: android

我想制作一份我可以注册的服务。该服务将广播不同“类型”的消息,每个应用程序可以注册自己以接收不同类型的消息。

例如:

我想写一个servive来读取某些用户的twitter消息并向系统广播标签。 然后,消费者可以注册仅接收标签“foo”的消息,并接收推文消息。 另一个消费者可以注册只接收标签“bar”的消息,并接收推文消息。

让我们假设我知道如何构建服务。我的第一个想法是只播放一些东西,然后在应用程序中过滤它。但我对这个解决方案并不满意。我知道有一些Android服务的工作方式类似于我想要的,但我没有在网上找到关于如何实现它的参考。


我所做的一些RTFM是:

主要的问题是,互联网上的大多数文档都是关于我调用服务的,而不是服务我的服务。

1 个答案:

答案 0 :(得分:0)

假设你谈论Service.sendBroadcast(Intent):你可以播放你想要的任何东西,但在某些时候它是不切实际的。你甚至可以为每个Twitter标签定义一个新的Action,但这只会很复杂。 你可以在这里使用意图的数据部分,接收代码可以像这样过滤广播:

    IntentFilter ifilter = new IntentFilter("com.your.package.ACTION_TWITTER_MSG");
    ifilter.addDataScheme("twitter");
    ifilter.addDataAuthority("com.your.package", null);
    ifilter.addDataPath("/foo", PatternMatcher.PATTERN_PREFIX);

然后你就这样发送:

    Intent intent = new Intent("com.your.package.ACTION_TWITTER_MSG");
    intent.setData(Uri.parse("twitter://com.your.package/foo"));
    context.sendBroadcast(intent);