我想制作一份我可以注册的服务。该服务将广播不同“类型”的消息,每个应用程序可以注册自己以接收不同类型的消息。
例如:
我想写一个servive来读取某些用户的twitter消息并向系统广播标签。 然后,消费者可以注册仅接收标签“foo”的消息,并接收推文消息。 另一个消费者可以注册只接收标签“bar”的消息,并接收推文消息。
让我们假设我知道如何构建服务。我的第一个想法是只播放一些东西,然后在应用程序中过滤它。但我对这个解决方案并不满意。我知道有一些Android服务的工作方式类似于我想要的,但我没有在网上找到关于如何实现它的参考。
我所做的一些RTFM是:
主要的问题是,互联网上的大多数文档都是关于我调用服务的,而不是服务我的服务。
答案 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);