Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 广播不同消息类型的服务_Android - Fatal编程技术网

Android 广播不同消息类型的服务

Android 广播不同消息类型的服务,android,Android,我想做一个我可以注册的服务。该服务将广播不同“类型”的消息,每个应用程序都可以注册自己以接收不同类型的消息 例如: 我想写一个服务,读取一些用户的twitter消息,并向系统广播标签。 然后,消费者可以注册仅接收标记为“foo”的消息,并接收tweet消息。 另一个消费者可以注册以仅接收标记为“bar”的消息,并接收tweet消息 假设我知道如何构建服务。我的第一个想法是广播一个东西,然后在应用程序中过滤它。但我对这个解决方案并不满意。我知道有一些android服务的工作原理与我想要的类似,但我

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

例如:

我想写一个服务,读取一些用户的twitter消息,并向系统广播标签。 然后,消费者可以注册仅接收标记为“foo”的消息,并接收tweet消息。 另一个消费者可以注册以仅接收标记为“bar”的消息,并接收tweet消息

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


我做的一些RTFM是:

  • ->对我来说不太好,因为这个问题只涉及一个流程,我需要服务与几个不同的流程对话

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

假设您谈论的是
服务。sendBroadcast(Intent)
:您可以播放任何您想要的内容,但在某些情况下它会变得不切实际。你甚至可以为每个Twitter标签定义一个新的动作,但这将非常复杂。 您可以在这里使用意图的数据部分,接收代码可以像这样过滤广播:

    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);
你这样送他们:

    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);

顺便说一句:这个问题的更好标题将允许您在“DuckDuckGo”的主页上免费重新加载:)您应该看看如何发送它们(在本例中是通过服务发送的)以及如何通过电子邮件接收它们。这是一个非常重要的android概念。或者退房。它们在这里也应该很有用,但我自己还没有对它们做太多的工作,所以请恕我直言。:)@alextsc那么你告诉我创建一条消息给服务,服务会通过intent联系“我”吗?这是我的选择之一。做一个完整的答案,这样我就可以+1了。编辑:嗯,我觉得事情对我来说太慢了。我需要更快的东西。@eluco是的。现在没时间,只要有帮助就好。不需要任何重复:P意图通常是快速的(即时的),除非您发送了大量数据(在1MB范围以上的某个地方,这会为系统带来大量开销)。在这种情况下,发送的意图基本上是“嘿,新数据”。之后,接收方可以从共享位置(例如SQLite db/文件或ContentProvider)提取数据。