Android设备上将同时运行两个独立的应用程序。我们负责App1。以下是Android设备上将会发生的事情:
首先启动App1,然后启动App2。
App1将显示包含消息的文件列表。
当App2启动时,它会向App1发送“连接”消息。
App1将允许用户从列表中选择一个文件。
当用户按下“运行”按钮时,App1将每隔3秒开始向App2发送消息。
App2会在收到的每封邮件后发回一条消息。
App1将读取App2发送的每条消息并将其记录到文件中。
App1发送的最终消息将导致App2向App1发送断开连接。
负责App2的小组想要使用SharedPreferences来完成所有这些。如果我们这样做,我们需要使用什么来确定App2消息何时在共享首选项中,以便App1可以读取它?
答案 0 :(得分:5)
即使共享首选项可以在进程之间共享(请参阅@CommonsWare答案..) 那听起来就像你描述的问题最糟糕的设计解决方案。 事实上,它闻起来像是一个可怕的想法,我相信它最终无论如何都无法发挥作用!
说SharedPreferences
是android中不同应用程序/进程之间通信的解决方案,就像完全忽略所有android API和核心组件一样!
SharedPreferences
并非旨在成为进程之间的某种消息队列。
甚至不接近!
android提供了更优雅的解决方案,用于在不同应用之间进行通信,以及在它们之间共享数据
例如:
Service
绑定(app1启动app2可以绑定的服务)BroadcastReceiver
ContentProvider
还有更多!
在您决定如何实施应用之前,我建议您更好地了解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
答案 1 :(得分:1)
负责App2的小组想要使用SharedPreferences来完成所有这些
这不是一个好主意。引用the documentation for SharedPreferences
:
注意:目前此类不支持跨多个进程使用。这将在稍后添加。
答案 2 :(得分:1)