在日常的开发工作中,经常需要将一些少量配置信息(机器或是设备)持久化的保存在本地。这时候使用数据库就会闲的很笨重,而且确实如此。SharedPreferences
作为一个很轻量级存储类是比较好的选择
本篇就此简单SharedPreferences的应用。
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="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("\n", ""); return token.replace("\"", ""); } // 存储名为token的`SharedPreferences` public static void saveToken(String token) { sp_editor.putString("token", token.trim().replace("\n", "")).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
目录下data\data\程序包名\shared_prefs\程序包名_preferences.xml
存储大小:
SharedPreferences
会在创建的时候把整个文件加载进内存,而且很持久的存在。如果SharedPreferences
过大 线程阻塞、卡顿、GC都会有的。
来源:https://www.cnblogs.com/chenjy1225/p/9662129.html