最是人间留不住,朱颜辞镜花辞树。这篇文章主要讲述Android SharedPreferences相关的知识,希望能为你提供帮助。
在日常的开发工作中,经常需要将一些少量配置信息(机器或是设备)持久化的保存在本地。这时候使用数据库就会闲的很笨重,而且确实如此。SharedPreferences
作为一个很轻量级存储类是比较好的选择
本篇就此简单SharedPreferences的应用。
SharedPreferences简介【Android SharedPreferences】SharedPreferences
是用来存储一些简单的配置文件的机制,SharedPreferences
使用Map
数据结构来存储数据(key-value
)。采用XML
格式将数据存储到设备中。
<
?xml version=‘1.0‘ encoding=‘utf-8‘ standalone=‘yes‘ ?>
<
map>
<
string name="name">
chenjy<
/string>
<
int name="age" value="https://www.songbingjia.com/android/18" />
<
/map>
SharedPreferences使用获取
SharedPreferences
有两种方式:1.1 调用
Context
对象的getSharedPreferences()
方法,可以被用一个应用程序下的其他组件共享。2.2 调用
Activity
对象的getPreferences()
方法,该对象只能在Activity
中使用。SharedPreferences
的四种操作模式:Context.MODE_PRIVATE
:默认的操作模式,代表改文件为私有数据,只能被应用本身访问。该模式下,写入的文件会覆盖原文件。Context.MODE_APPEND
:改模式会检查文件是否存在,如果存在就往文件追加内容否则就创建新文件。Context.MODE_WORLD_READABLE
:表示当前文件可以被其他应用读取。Context.MODE_WORLD_WRITEABLE
:表示当前文件可以被其他应用写入。SharedPreferences
源码SharedPreferences
通过SharedPreferences.Editor
来存储数据SharedPreferences.Editor.putInt
、SharedPreferences.Editor.putString
存key
value
值。
SharedPreferences.Editor.remove
清除指定key
的字段。
SharedPreferences.Editor.clear
清空所有数据。
import android.content.Context;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
public class EasySharePreference {private static SharedPreferences sharedPreferences = null;
private static SharedPreferences.Editor sp_editor = null;
public static void init(Context c) {
if (sharedPreferences == null) {
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(c);
}
if (sp_editor == null) {
sp_editor = sharedPreferences.edit();
}
}public static SharedPreferences getPrefInstance() {
return sharedPreferences;
}public static SharedPreferences.Editor getEditorInstance() {
return sp_editor;
}// 获取名为token的`SharedPreferences`
public static String getToken() {
String token = sharedPreferences.getString("token", "").trim().replace("
", "");
return token.replace(""", "");
}// 存储名为token的`SharedPreferences`
public static void saveToken(String token) {
sp_editor.putString("token", token.trim().replace("
", "")).commit();
}}
MainActivity:
package com.example.chenjy.chenjy;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
import utils.EasySharePreference;
public class MainActivity extends Activity {private TextView tv_token;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EasySharePreference.init(getApplicationContext());
initView();
}private void initView(){tv_token = (TextView)findViewById(R.id.tv_token);
EasySharePreference.saveToken("chenjy");
tv_token.setText(EasySharePreference.getToken());
}}
文章图片
SharedPreferences使用tips
- 存储位置:文件存储在
Android
目录下datadata程序包名shared_prefs程序包名_preferences.xml
- 存储大小:
SharedPreferences
会在创建的时候把整个文件加载进内存,而且很持久的存在。如果SharedPreferences
过大 线程阻塞、卡顿、GC都会有的。
推荐阅读
- 考拉Android统一弹框
- Spring源码解析 – AnnotationConfigApplicationContext容器创建过程
- Android-自定义仿QQ列表Item滑动
- 迈向高阶(优秀Android程序员必知必会的网络基础)
- Android PDA扫描枪广播接搜条码并使用
- 高德定位腾讯定位在APP上无法开启定位权限的解决方案
- Android开发资源收集
- Android View 的事件分发原理解析
- mybatis学习 十六 auto_mapping实现连表查询