我想知道,活动之间是否有任何好的数据共享策略,以及在单独进程中运行的衍生远程服务。到目前为止,我已经尝试了 3 种方法,但都没有奏效。
利用Application
我首先想到的是,只有一个Application
, 在 2 个不同的进程之间共享,因为它们来自一个应用程序。
但事实并非如此。我意识到,在创建 main 之前Activity
,会创建一个Application
will。当我生成远程服务时,Application
也会创建另一个新实例。
利用Preferences
我的第一个想法是,这是基于文件的。Preferences
因此,每当我向through写入值时sharedPreferences.edit().putString(key, value).commit()
,更改都会提交到文件中。另一个进程应该能够读取最新的更改。
但这种情况并非如此。我的猜测是,这是因为在我的服务中,我Preferences
只在服务启动期间通过PreferenceManager.getDefaultSharedPreferences(application)
. 它仅在第一次从文件中读取值。后续调用getString
将从内存中读取。
使用全局静态变量
不可行,因为Activity
远程Service
处于 2 个不同的进程中。他们有2个不同的内存空间。
我可以尝试任何更好的策略吗?