首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SharedPreference 的commit和apply

SharedPreference是Android开发中经常用到的一个数据持久化类, 我们可以把一些需要持久化的数据放到一个指定的 Preference文件中,并持久化到磁盘上以xml形式存储起来。...这个xml文件对于开发者来说基本算是透明的,开发者只需要面对 Preference 所需要的文件名。 关于SharedPreference的原理可以分读和写两部分理解,今天我们先说关于写的这部分。...· commit的写磁盘是同步行为 · 两者在写磁盘前都会先同步的写到内存缓存中 apply 流程 首先要理解 SharedPreference有一个两级缓存系统,包括了内存缓存和磁盘缓存。...它用一个 HashMap对象mMap保存内存缓存,每次写的时候都会先更新这个对象的数据。...SharedPreferencesImpl.this.enqueueDiskWrite(mcr, postWriteRunnable); notifyListeners(mcr); } 逐句分析, 先调用了commitToMemory()同步修改后的数据到内存中

1.3K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    android之ListPreference的用法_PreferenceActivity用法

    实际上,它也确实是干这个的,我们通过使用preference可以迅速的将某些值保存进xml文件中,然后我们可以读取这些设置信息进行相应的操作。...下面我们简单的介绍下ListPreference的用法: 我们选择了山东,然后该页面就会自动关闭,并且和山东所对应的值也已经写入了后台的xml文件中。...* 那么,preference在这里是怎么样进行自动保存的呢,答案很简单,那就是在addPreferencesFromResource方法的具体实现中!...弹出的对话框中,列表显示的文本内容,注意哦,这里指定的是一个数组 android:entryValues 与android:entries相对应的值 android:defaultValue 当对应值不存在时的默认值...android:dialogTitle 弹出的对话框中的标题信息 --> <PreferenceScreen xmlns:android="http://schemas.android.com/apk

    1.1K20

    application和sharedpreference的区别

    在android程序中,我们经常用intent来传递数据,但是intent传递的数据类型太少了。因此我们经常通过以下两种方法来传递数据。...一.sharedpreference(用法网上有,这里不再说明) 二.application Application对象的生命周期是整个程序中最长的,它的生命周期就等于这个程序的生命周期。...因为它是全局的单例的,所以在不同的Activity,Service中获得的对象都是同一个对象。所以可以通过Application来进行一些,如:数据传递、数据共享和数据缓存等操作。... demo的效果...因为第一sharedpreference传递的数据类型有限。而且无法避免多线程访问冲突;第二如果使用真机调试的话sharedpreference文件不好查看

    52920

    Android笔记:SharedPreference中editor.apply();和editor.commit();的区别

    相同点: 1.二者都可提交preference的修改数据 2.二者都是原子操作 区别: 1.apply没有返回值而commit返回boolean表明修改是否提交成功 2.apply是将修改数据原子提交到内存...,而后异步真正提交到硬件磁盘;而commit是同步的提交到硬件磁盘,因此,在多个并发的提交commit的时候,他们会等待正在处理的commit保存到磁盘后在操作,从而降低了效率。...而apply只是原子的提交到内容,后面有调用apply的函数的将会直接覆盖前面的内存数据,这样从一定程度上提高了很多效率。 3.apply方法不会提示任何失败的提示。...总结: 由于在一个进程中,sharedPreference是单实例,一般不会出现并发冲突,如果对提交的结果不关心的话,建议使用apply,当然需要确保提交成功且有后续操作的话,还是需要用commit的。

    72920

    Android的配置文件操作封装,摒弃SharedPreference操作配置漫天乱飞

    在Android项目应用中,经常会用到读取和保存配置文件。Android提供了SharedPreference类方便的对配置文件进行操作。...反正只要能获取到全局的context,在需要参数读取和保存的地方,可以实现操作配置文件。 这种重复的,低效率的事,没给代码增加一点儿清晰度,还容易造成混乱。...且按照模块化的思想,应该尽可能的复用现有的成果。如果这么乱糟糟的使用起来不便还容易出错,更无法复用。 因此,有必要对配置文件的操作理一理,归归类,管理起来,方便复用,可做为一个模块来用。...,摒弃SharedPreference漫天飞 * 系统配置SysCfg类 * 在应用启动时,先初始化调用 SysCfg sysCfg = SysCfg.getInstance(context);...* 相比工程代码中到处穿梭的 * SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context); * userId

    70610

    安卓 topic-UI-设置 settings

    例如,CheckBoxPreference 可创建一个列表项用于显示复选框,ListPreference 可创建一个项目用于打开包含选择列表的对话框。...ListPreference打开一个包含单选按钮列表的对话框。保存的值可以是任一受支持的值类型(如上所列)。 EditTextPreference打开一个包含 EditText 小部件的对话框。...() 从应用内的任何位置访问的文件中。...要在任一首选项发生更改时收到回调,请实现SharedPreference.OnSharedPreferenceChangeListener 接口,并通过调用 registerOnSharedPreferenceChangeListener...但是,您必须存储对侦听器的强引用,否则它将很容易被当作垃圾回收。 我们建议您将对侦听器的引用保存在只要您需要侦听器就会存在的对象的实例数据中。 例如,在以下代码中,调用方未保留对侦听器的引用。

    3.1K10

    Android 存储学习之使用SharedPreference保存文件

    上两节我们都是使用文本文件保存用户的信息,这明显是存在漏洞的。同时对文件中的内容不好管理。今天我们学习用SharedPreference保存。...sharedPreference是专门保存一些比较零散的数据的。 我们还是用上节的例子分析,将用户的信息使用SharedPreference来保存。...注意:如果不知道是什么例子,请看Android 存储学习之在内部存储中读写文件 当点击确定按钮后,就会保存用户的信息: public void login(View v) { String name...来保存用户的信息, //SharedPreference的默认路径是:当前进程包名下的/share_prefs/ SharedPreferences sp = getSharedPreferences...: public void readInfo() { //获取info文件中的内容 SharedPreferences sP = getSharedPreferences("info",

    45720
    领券