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”);//应替换成应用的包名

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-06 11:56:22

SharedPreferences的使用心得的相关文章

简单的学习心得:网易云课堂Android开发第五章SharedPreferences与文件管理

一.SharedPreferences (1)SharedPreferences能够用来保存一些属于基本数据类型的数据. (2)保存数据,删除数据都是由SharedPreferences的内部接口Editor负责. (3)通过这种方式保存的数据在root->data->包名->shared-prefs文件夹下的xml文件中. 二.文件管理 (1)创建文件的方式:new File(...)和openFileOutput,通过new File(...)的方式创建文件,还需要调用createN

sina微博开发学习心得

大家都知道新浪微博上有很多附加应用,那些东西是怎么做出来的呢,这几天开始学习sina微博的开发,sina为我们提供了很多接口,根据这些接口就可以开发基于微博的一些应用! 首先一些需要用到的技术要点 一.新浪微博部分: 1.新浪微博 Aouth 认证 2.新浪微博 获取微博列表 3.新浪微博 发表微博 4.新浪微博 评论微博 5.新浪微博 转发微博 二.其他技术要点: 1.Android Layout 布局 2.Android自定义 UI 3.Android Handler 3.Android S

Delphi组件indy 10中IdTCPServer修正及SSL使用心得

indy 10终于随着Delphi2005发布了,不过indy套件在我的印象中总是复杂并且BUG不断,说实话,不是看在他一整套组件的面子上,我还是喜欢VCL原生的Socket组件,简洁,清晰.Indy9发展到了indy10几乎完全不兼容,可叹啊.言归正传.在使用IdTCPServer组件的时候发现了他的漏洞,他的OnConnec,OnExecute,OnDisconnect等事件是在其他线程中执行的,通常情况下这没有问题,但是在特殊的情况下会造成问题,如果其他部分的程序写得有问题就会出现漏洞.

SharedPreferences 源码分析

我们先看一下SharedPreferences (下文用 SP 简写替代)的用法. SharedPreferences preferences = getSharedPreferences("name", Context.MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putString("key", "value"); editor.comm

Linux系统理解以及Linux系统学习心得

原创作品转载请注明出处  <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 作者:严哲璟 说一下我对Linux系统的理解 1.加载Linux内核准备:在加载基本输入输出模块(BIOS)之后,从磁盘的引导扇区读入操作系统的代码文件块到内存中,之后开始整个系统的初始化. 2.main.c的start_kernel函数是整个操作系统的入口,这也与Linux是基于C语言的特性相符,start_kernel具体做的动作很多

参加老男孩linux培训心得

参加老男孩linux培训心得 时间如白驹过隙,已经不知不觉来到老男孩培训已经三个月了.在这三个月中我渐渐得到了成长,专业技术成长,以及为人处事之道与思想的提高. 我一共就总结以下了三点     一.思想 在我刚来老男孩的时候,老师天天上课前讲一段思想,我当时不太明白,不赶紧上课,讲这干啥呢?而且老师早一点讲完,又可以招下一批学生了,老讲思想,这不是自断财路么?随着时间的流逝,渐渐的我悟懂了点.人在那里都可以学技术,但是学会了技术没有思想,一旦来了新事物,就会接受的很慢.尤其在互联网这个圈子里,软

安卓-SharedPreferences和Editor保存数据

SharedPreferences是Android中最容易理解的数据存储技术,实际上SharedPreferences处理的就是一个key-value(键值对)SharedPreferences常用来存储一些轻量级的数据. 在做连连看游戏的时候,需要保存游戏进度,所以稍微用了一下,这里做个小结. 我的做法是,首先给出如下定义: private SharedPreferences sp; private static String MY_APP="MYAPP"; 然后再写两个方法,执行数

Android -- Sharedpreferences

//采用android sharedpreferences 进行数据的保存读取 SharedPreferences sharedPreferences; private final String mediaShare = "test"; private void InitMediaSharePreference() { sharedPreferences = this.getSharedPreferences(mediaShare, MODE_PRIVATE); } //写入 Stri

Linux串口IO模式的一些心得

众所周知,在Linux系统下所有设备都是以文件的形式存在,串口也一样. 通常I/O操作都是有阻塞与非阻塞的两种方式. 其中"超时"这个概念其实是阻塞中的一种处理手段,本质还是属于阻塞的I/O模式. 在Linux中串口的IO操作 本文将它分为三种状态: 阻塞状态 超时状态 非阻塞状态 这三种状态的转换组合有这么几种: 阻塞 --> 超时 阻塞 --> 非阻塞 超时 --> 阻塞 超时 --> 非阻塞 非阻塞 --> 阻塞 我们一个一个来分析 首先在一个串口的