情景:数据的永久保存:存储轻量级数据,比如游戏的记录,软件的配置
shared 共享的 preferences 偏好 commit 承诺,保证
context 上下文;语境;环境 我们这里讨论的Context。可以这样讲,Context是维持Android程序中各组件能够正常工作的一个核心功能类。它描述一个应用程序环境的信息(即上下文);是一个抽象类,Android提供了该抽象类的具体实现类;通过它我们可以获取应用程序的资源和类(包括应用级别操作,如启动Activity,发广播,接受Intent等)。
SharedPreferences是手机中每个app允许我们创建的一个存储简单数据的文件的一个接口。
设备文件浏览器,其路径:
/data/data/包名/名称
一:直接创建并使用(用的多):
模式有:
MODE_PRIVITE :默认模式,该模式下创建的文件只能被当前应用或者与该应用具有相同SharedUserID的应用访问。
MODE_READABLE:允许其他应用读取这个模式创建的文件。在Android N上使用该模式将抛出SecurityException异常。
MODE_WRITEABLE:允许其他应用写入这个模式创建的文件。在Android N上使用该模式将抛出SecurityException异常。
写入后的确认方式有两种:
editor.apply:异步执行,没有返回值;
editor.commit:同步执行,有返回值。
如果不考虑结果并且是在主线程执行推荐使用 apply;
需要确保操作成功且有后续操作的话,用 commit()
注意:这里MainActivity可以直接访问该文件是因为他们都由共同的父类(老师是这么讲的),反正,他们有关系就对了。这种情况开发中用得比较少。
二:创建一个管理数据类,在该类中使用sharedprefere。(用得少)
在MainActivity中:
下面是生成的文件:
this.getApplicationContext()取的是这个应 用程序的Context,Activity.this取的是这个Activity的Context,这两者的生命周期是不同 的,前者的生命周期是整个应用,后者的生命周期只是它所在的Activity。
实际应用中,存储数据最好在onPause环节,比较可靠。软件在后台被强制杀死的情况下,或者其他非正常情况下,onStop和onDestroy阶段可能不会发生。