使用SharedPreferences在两个单独的Android应用程序之间共享数据

use*_*082 0 android sharedpreferences

Android设备上将同时运行两个独立的应用程序.我们负责App1.以下是Android设备上发生的情况:

首先启动App1,然后启动App2.

App1将显示包含消息的文件列表.

当App2启动时,它会向App1发送"连接"消息.

App1将允许用户从列表中选择一个文件.

当用户按下"运行"按钮时,App1将每隔3秒开始向App2发送消息.

App2将在收到的每个消息之后发回消息.

App1将读取App2发送的每条消息并将其记录到文件中.

App1发送的最后一条消息将导致App2向App1发送断开连接.

负责App2的小组想要使用SharedPreferences来完成所有这些.如果我们这样做,我们需要使用什么来确定App2消息何时在共享首选项中,以便App1可以读取它?

Tal*_*nel 5

即使可以在进程之间共享共享首选项(请参阅@CommonsWare答案..),这听起来像是您描述的问题的最差设计解决方案.事实上,它闻起来像是一个可怕的想法,我相信它最终无论如何都无法发挥作用!

SharedPreferences是解决android中不同的应用程序/进程之间的通信,就像完全忽略所有的android API和核心组件!

SharedPreferences不是设计成进程之间的某种消息队列.甚至不接近!

android为不同应用程序之间的通信提供了更优雅的解决方案,并在它们之间共享数据

例如:

  • 远程Service绑定(app1启动app2可以绑定的服务)
  • 当一些事件发生时,从一个应用程序向另一个应用程序发送广播,并从另一个应用程序中获取广播 BroadcastReceiver
  • app1可以实现和公开ContentProvider可以从app2访问的内容

而且还有更多!

我建议你最好了解Android的核心部件(Service,BroadcastReceiver,Activity,ContentProvider)你的任何决定如何实现您的应用程序之前.我无法想象如果不使用上述至少3种方法来创建良好的功能应用程序.您可以通过阅读Android开发人员入门指南中的第一页来改变这一点 - http://developer.android.com/guide/components/fundamentals.html

链接:

http://developer.android.com/reference/android/app/Service.html http://developer.android.com/reference/android/content/BroadcastReceiver.html http://developer.android.com/reference/ android/content/ContentProvider.html http://developer.android.com/guide/components/bound-services.html