SharedPreference的使用以及commit()和apply()的区别

SharedPreferences作为Android的五大存储结构之一,在保存简单数据类型上因效率高而被广泛应用.可为应用程序记录退出前的数据.直接上实例:

package com.example.global;

import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;

public class Setting {
	
	public static final String PREFERENCE_NAME = "AlarmSetting";
	public static final String FLAG_HOUR = "hour";
	public static final String FLAG_MINUTE = "minute";
	public static final String FLAG_ENABLE = "enable";
	
	public static int hour;
	public static int minute;
	public static boolean enable;
	
	public static void getSetting(Context context){
		SharedPreferences sp = context.getSharedPreferences(PREFERENCE_NAME,Context.MODE_PRIVATE);
		sp.getInt(FLAG_HOUR, 0);
		sp.getInt(FLAG_MINUTE, 0);
		sp.getBoolean(FLAG_ENABLE, false);
	}
	
	public static void saveSetting(Context context){
		SharedPreferences sp = context.getSharedPreferences(PREFERENCE_NAME,Context.MODE_PRIVATE);
		SharedPreferences.Editor edit = sp.edit();
		edit.putInt(FLAG_HOUR, hour);
		edit.putInt(FLAG_MINUTE, minute);
		edit.putBoolean(FLAG_ENABLE, enable);
		edit.apply();
	}

}

在提交数据时可使用commit()和apply()两个方法,其区别在于:

1. apply没有返回值而commit返回boolean表明修改是否提交成功

2. apply是将修改数据原子提交到内存, 而后异步真正提交到硬件磁盘, 而commit是同步的提交到硬件磁盘,因此,在多个并发的提交commit的时候,他们会等待正在处理的commit保存到磁盘后在操作,从而降低了效率。而apply只是原子的提交到内容,后面有调用apply的函数的将会直接覆盖前面的内存数据,这样从一定程度上提高了很多效率。 
3. apply方法不会提示任何失败的提示。 
由于在一个进程中,sharedPreference是单实例,一般不会出现并发冲突,如果对提交的结果不关心的话,建议使用apply,当然需要确保提交成功且有后续操作的话,还是需要用commit的。
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值