问题1:
Widget 和主进程SharedPreference 中数据不同步
原因:
主进程应用写入后,第一次 Widget是一次性读进了内存,在应用程序杀掉之前,都是从内存中拿的,所以实际上是 Widget将其缓存下来了。应用能够正确读取到数据,第二次再从 主进程应用修改数据的时候 为啥 Widget还是拿到旧的数据? (没有退出应用的前提下)
答案是:这种跨进程的共享,Widget是一次性读进了内存,在应用程序杀掉之前,都是从内存中拿的,所以实际上是Widget将其缓存下来了。
解决方法:
Widget中获取sharepreference时, 使用sp=context.getSharedPreferences("test_sp", MODE_MULTI_PROCESS); 就可以得到最新的数据
问题2:
读跨进程sharepre
Context context=null;
try {
//创建上下文,指定宿主应用的包名以及 忽略系统的安全过滤,这点切勿忽视!
context=createPackageContext("com.sharepreference.write", Context.CONTEXT_IGNORE_SECURITY);
} catch (NameNotFoundException e) {
e.printStackTrace();
}
sp=context.getSharedPreferences("test_sp", MODE_WORLD_READABLE);