所以我的问题如下:我有2个服务运行在不同的进程,并希望保持这种方式。一种是将数据从数据库传送到绑定应用程序,另一种是通过套接字轮询传入数据。我觉得保持独立的过程会更好。问题是我想要在两个服务之间共享首选项,并且想要实现OnSharedPreferenceChangeListener来更新轮询和总线数据所需的设置。我不能在服务中实现OnSharedPreferenceChangeListener,因为它们在不同的进程上运行。我可以在PreferenceActivity上实现此功能,但是如何与服务进行通信以便立即更新?我不想使用AIDL并担心绑定。有创建广播接收器和发送意图的可能性,但如果设置菜单增长,这些似乎是一个很大的工作。那里有其他很棒的点子吗?OnPreferenceChangeListener在不同的进程 - 共享首选项数据
回答
我已经创建了一个基于ContentProvider的一个简单的SharedPreferences,可翻过过程中使用,你可以从我的到位桶https://bitbucket.org/ABitNo/zi/src/783b6b451ba1/src/me/abitno/zi/provider/preference
没事这里是你的答案...
在这个例子中的使用偏好可以采取3班 - 2个服务服务A和B(HREF A,B)和设置(preferenceActivity)
初始化两项服务为
public class ServiceA/B extends serice implements OnSharedPreferenceChangeListener{
@Overside
public void onCreate(....){
Settings.getPrefs(this).registerOnSharedPreferenceChangeListener(this);
}
@Override
protected void onResume() {
super.onResume();
Settings.getPrefs(this).registerOnSharedPreferenceChangeListener(this);
}
@Override
protected void onPause() {
super.onPause();
// Unregister the listener whenever a key changes
Settings.getPrefs(this)
.unregisterOnSharedPreferenceChangeListener(this);
}
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
System.out.println("++"+key+"++");
if(key == "KEYA"||key == "KEYC")
Do_what_ever_you_want();
if (key == "KEYB")
do_anything();
}
do_anything(){}
Do_what_ever_you_want();
}
共享偏好Part。
public class Settings extends PreferenceActivity implements
OnSharedPreferenceChangeListener{
public static final String PREFS_PRIVATE = "PREFS_PRIVATE";
public static final String MASTERKEY = "[email protected]#$%^&*";
public static final String KEYA = "KEYA";
public static final String KEYB = "KEYB";
public static final String KEYC = "KEYC";
--- the create and get methods for getting and sharing data in the prefs... .....
// get them from just a google search.
}
我有这个系统在我的应用程序了一个实现的...和部署......如此反复折腾这些基本知识,让我知道这是怎么一回事呢?
拉杰什...
这不回答我的问题找到他们。这个答案假定服务运行在与PreferenceActivity相同的过程中。这就是OnSharedPreferenceChangeListener工作的原因。在我的应用程序中,此解决方案不起作用,因为该服务在Manifest文件'android:process =“”'定义的不同进程中运行。如果我把所有的东西都放在一个过程中,这将起作用 - 我已经测试过了。但是这对我的应用程序不起作用。 – jjNford
是否尝试过...我在应用程序中写过...我知道服务意味着什么,并且这个在任何内容中都是没有办法的...它可以从manifest或者broadcastlistener中调用... – medampudi
我相信你做到了。但是,如果在另一个进程中运行,监听器将无法工作。您在相同的过程中拥有您的服务和应用程序。如果我这样做,我的工作,但第二我定义我的服务运行在一个新的进程不起作用。不过,我解决了这个问题,所以没关系。 – jjNford
- 1. 共享首选项
- 2. 共享首选项
- 3. 共享首选项Android存储数据
- 4. 共享首选项与数据库
- 5. 删除共享首选项数据
- 6. 共享首选项有多少数据?
- 7. 共享首选项存储
- 8. Android共享首选项
- 9. 共享首选项Android
- 10. 共享首选项关闭
- 11. Android共享首选项
- 12. 使用共享首选项
- 13. 我的共享首选项不更新,
- 14. python多进程在不同python进程之间共享数据
- 15. 使用共享首选项在两个具有相同包名的应用程序之间共享数据
- 16. 共享首选项不必创建?
- 17. 共享首选项不起作用
- 18. 共享首选项不工作,android?
- 19. Android共享首选项不起作用
- 20. 共享首选项不正确gettingBoolean
- 21. 共享首选项前5个整数
- 22. 共享首选项中的数据缓存
- 23. 从共享首选项检索数据后,ListView不会刷新
- 24. Android - 使用共享首选项不工作发送数据
- 25. 共享首选项存储在哪里?
- 26. 保存意向共享首选项
- 27. 在共享首选项中存储机密数据 - android
- 28. 共享首选项和sqlite的区别
- 29. 访问多个共享首选项
- 30. 共享首选项是否在用户之间共享
趋向于断开链接。 (如果你能解决这个问题,我们会再次赞同):-)) – msangel