android – 我应该选择哪种应用程序间通信?

我需要Android中的推送逻辑消息广播功能,将数据消息推送到订阅内容的其他应用程序.订阅应用程序应该注册过滤器设置和权限,以便它们只接收他们感兴趣的数据.这样可以确保不会不断地进行不必要的传输,因为这会浪费资源.

Android中是否有任何现成的机制来实现这一目标?

我看过了意图广播,但好像我把数据打包成一个parcelable我没有内置的过滤功能.我将始终必须将所有数据发送到一个parcelable然后解压缩并提取小部分我从那里感兴趣(?)

然后我查看了ContentProviders,但似乎他们没有将消息推送到收件人,而是使用类似sql的查询字符串查询要获取的内容. ContentProvider可以使用查询作为过滤器将邮件推送到已注册的收件人吗?

也许是一个复杂的问题要回答,但我试一试;我应该使用哪种机制,还是我必须自己编写?

解决方法:

Is there any ready-to-use mechanism in Android to accomplish this?

这取决于您希望将“问题”视为“随时可用”的问题的哪个部分.将数据推送到另一个应用程序是通过广播Intents处理的.

I have looked at intent broadcasts, but it seems as if I pack data as a parcelable I don’t have a filter function built in. I will always have to send all of the data in one parcelable and then unpack and extract the small part that I am interested in from there(?)

您的应用程序将进行过滤,然后发送匹配的广播.这是基于代理的“发布/订阅”推送模型采用的典型方法:代理进行过滤,仅通过通信信道向订户发送相关消息.例如,GCM不会将发往每个设备的每条消息发送到每个设备,并期望设备进行自己的过滤 – GCM服务器进行过滤,然后将特定消息发送到特定设备.

在某些情况下,您可以利用IntentFilter功能为您进行过滤.例如,假设消息确实代表一个文件.文件具有MIME类型.您可以在正在广播的Intent中包含文件的MIME类型,接收者可以通过其过滤器指定他们感兴趣的MIME类型.接收者只能从相关广播中获取消息.

但是,对于更多任意类型的订阅(例如,“向我发送在某些JSON编码对象中具有特定值的所有消息”),您必须自己实现过滤.

Can a ContentProvider push messages onto a registered recipient using a query as a filter?

不,对不起

上一篇:javascript – 在React.js中,我如何设置一个简单的全局事件系统来在组件之间进行通信?


下一篇:c# – 串口重定向或拆分