本文共 722 字,大约阅读时间需要 2 分钟。
问题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);
转载地址:http://dxdub.baihongyu.com/