zoukankan      html  css  js  c++  java
  • Android SharePreference 在主进程和次进程间共享数据不同步出错

     

        SharedPreference作为android五大存储(网络,数据库,文件,SharedPreference,contentProvider)之中最方便使用的一个,从类名上来看就不是一个存储大数据的工具,以key/value成对的形式来存储基本数据类型,只能存储基本数据类型。

        在平时的开发中偶尔会遇到SharedPreference在多进程中修改同一个值出现的问题。多进程是指在ddms中看到的不同进程,包括不同应用(不管share uid 是否相同),同一个应用中配置android:process=""产生的多个进程。他们之间进行通信都会造成主进程修改值之后,在次进程读取到的还是第一次初始化时读取到的值。

    我归纳总结的解决办法如下:

    1、首先要将获取SharedPreference的MODE设置为: MODE_MULTI_PROCESS 。其值为4(2.3以后有该属性)。如:   getSharedPreferences("file_test", MODE_MULTI_PROCESS);.如果是使用MODE_PRIVATE这种模式,那么另一个进程中写入的值,将不会写到文件中。

    2、其次为了保证修改数据实时提交到磁盘,不要将SharedPreference设置成成员变量,尽量在哪里修改就在哪里直接获取SharedPreference,修改后别忘记commit。

    如果做到了上面两点,不出意外的话,数据就可以做到实时修改了。

    3、如果两个进程都需要适时读取或根据该值进行逻辑操作,那么最好在两个进程间使用Service和aidl技术,aidl对于这种基本类型的传递很容易。

    最后:对于分享数据来说:如果是瞬时分享数据,不需要长期保存的话可以使用广播。如果要分享大量数据的话使用 ContentProvider是最好的选择。

  • 相关阅读:
    兄弟连,一般人来不起,来的肯定不是一般人!
    50天之脱变,66期第一个项目感受。切记平常心
    2016十大影响事件
    为什么要写年终总结
    20161228阅读笔记
    为什么要认识牛人
    李笑来:演讲能力是我这一生有幸学到的最重要能力
    张辉:工作几年就应该给自己“清零”
    小马宋:目标决定方法~坚持目标而不是方法
    李笑来的财务自由法~把一份时间卖出很多份
  • 原文地址:https://www.cnblogs.com/qianyukun/p/5893811.html
Copyright © 2011-2022 走看看