Pin*_*azz 7 android broadcastreceiver android-intent android-activity
我一直在努力如何在不展示每个应用程序前景的情况下最好地实现应用程序间通信。我曾考虑过使用BroadcastReceivers在这两个应用程序之间进行通信,但是看来它们必须在清单中进行注册,因此很难将数据带入活动中。一个示例就是一个应用程序会将其状态发送给另一个应用程序,表明它已准备好开始运行会话。但是,我希望在启动会话时将另一个应用程序保留在后台,并让用户根据需要在应用程序之间进行切换。
有谁知道什么是最好的方法?基本上,只要其他应用程序正在运行,我就希望将数据发送到另一个应用程序。
我想您对a的想法还算broadcastreceiver
不错:您不必broadcastreceiver
在清单中注册a ,您也可以按需创建它们,甚至可以使用组成它们Activity
。但是除此之外,还有一些方法可以解决您的问题:
方法1
首先,您可以使用IntentService
和PendingIntent
来使用进行简单的通信ResultReceiver
。另请参见这个伟大的stackoverflow问题以获取更多信息:
方法#2
更为通用的方法可能是使用IntentFilter
和方案来捕获发送数据。它也是基于Intent的,并且可以解决您的情况,如果(!)您可以正确地处理数据捕获:在您的情况下,仅当数据正在运行时。另请参阅本文以获取此方法的(简短)示例:
https://android-developers.googleblog.com/2009/11/integrating-application-with-intents.html 。
方法3
最后但并非最不重要的一点:利用共享(但受保护!)文件和其他数据存储选项。这可能是一个加密的文件,并且在您的第二个应用程序运行时处于活动状态。这可能还需要其他提到的选项的其他部分,例如IntentService
可以由Alarmmanager
or 进行管理的运行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/
长话短说:
祝你好运,并让我发布!;)