【知识点整理(Android)】SharedPreferences的使用心得

@会不断补充的
1、sharedPreferences对象的初始化
三种方式:
1)getSharedPreferences(String name, int mode)
2)PreferenceManager的方法getSharedPreferences()
3)getDefaultSharedPreferences方法
第二三种都是使用系统默认的xml作为sharedPreferences存储数据的文件。
第一种是自己创建的xml文件,用来存储数据。
区别在于第一种相对来说,应用的场景更加广泛。而二三方法可以用来生成储存整个app状态的缓存。

2、SharedPreference.Editor的apply和commit方法
// 偶然IDE提醒使用apply在某个场景更好。
这两个方法的区别在于:
1)apply没有返回值而commit返回boolean表明修改是否提交成功
2)apply提交的内容先提交到内存,然后提交到xml上,其中过程中存在两个实例同时提交,前者被后者覆盖的情况,
而commit是直接提交到xml上,当出现两个实例同时提交的情况,会同步处理。所以相对来说commit在线程安全上更加优越,但是速度上有所牺牲。
3)但一般sharedPreferences是单实例,一般不会出现并发冲突,所以使用apply会更快些。

3、SharedPreference的一般应用场景:
a、检查用户是不是第一次登陆
b、应用程序最后一次更新时间检查
c、保存用户登录用户名
d、保存应用程序的状态
e、缓存用户的位置信息

4、一个很好的使用SharedPreference的方式:SharedPreferences + 单例 = 缓存

    private ParentCache(Context context){

        parentPreferences = PreferenceManager.getDefaultSharedPreferences(context);

    }

    public static ParentCache getInstance(Context context) {

        if(parentCache == null) {
            parentCache = new ParentCache(context.getApplicationContext());
        }
        return parentCache;
    }

    public void clearCache() {
        parentPreferences.edit().clear().apply();
    }

5、访问其他应用中的Preference 的方式(copy)

// 如果访问其他应用中的Preference,前提条件是:该preference创建时指定了Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE权限。如:有个为cn.yang.action的应用使用下面语句创建了preference。
getSharedPreferences(“TEST”, Context.MODE_WORLD_READABLE);

1)其他应用要访问上面应用的preference,首先需要创建上面应用的Context,然后通过Context 访问preference ,访问preference时会在应用所在包下的shared_prefs目录找到preference :
Context otherAppsContext = createPackageContext(“cn.yang.action”, Context.CONTEXT_IGNORE_SECURITY);
SharedPreferences sharedPreferences = otherAppsContext.getSharedPreferences(“TEST”, Context.MODE_WORLD_READABLE);
String name = sharedPreferences.getString(“name”, “”);
int age = sharedPreferences.getInt(“sex”, “”);

2)如果不通过创建Context访问其他应用的preference,也可以以读取xml文件方式直接访问其他应用preference对应的xml文件,如:
File xmlFile = new File(“/data/data//shared_prefs/itcast.xml”);//应替换成应用的包名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值