应用程序间通信的最佳方法而又不突出它们?

时间:2019-05-30 18:29:11

标签: android android-intent android-activity broadcastreceiver

我一直在努力,如何在不让每个应用程序出现前景的​​情况下最好地实现应用程序间通信。我曾考虑过使用BroadcastReceivers在这两个应用程序之间进行通信,但是看来它们必须在清单中进行注册,因此很难将数据带入活动中。一个示例就是一个应用程序会将其状态发送给另一个应用程序,表明它已准备好开始运行会话。但是,我希望在启动会话时将另一个应用程序保留在后台,并让用户根据自己的意愿在应用程序之间切换。

有人知道什么是最好的方法吗?基本上,只要其他应用程序正在运行,我就希望将数据发送到另一个应用程序。

1 个答案:

答案 0 :(得分:5)

我想您对broadcastreceiver的想法还算不错: 您不必在清单中注册broadcastreceiver,也可以按需甚至使用Activity在组合中创建它们。 但是除此之外,还有一些方法可以解决您的问题:

方法1

首先,您可以使用IntentServicePendingIntent来使用ResultReceiver进行简单的通信。 另请参见这个伟大的stackoverflow问题以获取更多信息:

android communication between two applications

方法2

一种更通用的方法是使用IntentFilter和一种方案来捕获发送数据。它也是基于Intent的,并且可以解决您的情况,如果(!)您可以正确地处理数据捕获:仅在数据正在运行的情况下。 另请参阅本文以获取此方法的(简短)示例:

https://android-developers.googleblog.com/2009/11/integrating-application-with-intents.html

方法3

最后但并非最不重要的一点:利用共享(但受保护!)文件和其他数据存储选项。这可能是一个加密的文件,并且在您的第二个应用程序运行时处于活动状态。这可能还需要其他提到的选项的其他部分,例如可以由IntentServiceAlarmmanager管理的运行JobScheduler。 对于这种情况,我建议使用官方的Android文档:

https://developer.android.com/training/secure-file-sharing/setup-sharing.html https://developer.android.com/guide/topics/data/data-storage.html

:因为在大多数情况下,您会获得某种“后台运行服务”, 我建议您看看Android提供的一些方法,因为它们可以完全改变适合的方法和可能性:

https://www.bignerdranch.com/blog/choosing-the-right-background-scheduler-in-android/

长话短说:

祝您好运,并随时通知我! ;)