zoukankan      html  css  js  c++  java
  • Android SharedPreferences

    在日常的开发工作中,经常需要将一些少量配置信息(机器或是设备)持久化的保存在本地。这时候使用数据库就会闲的很笨重,而且确实如此。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.putIntSharedPreferences.Editor.putStringkey 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());
    
        }
    
    }
    
    

    outPut

    SharedPreferences使用tips

    • 存储位置:文件存储在Android 目录下 datadata程序包名shared_prefs程序包名_preferences.xml

    • 存储大小:SharedPreferences 会在创建的时候把整个文件加载进内存,而且很持久的存在。如果SharedPreferences过大 线程阻塞、卡顿、GC都会有的。

  • 相关阅读:
    UVA——A Spy in the Metro(线性dp)
    IDEA运行jsp文件变成源码详细解决方案
    CF1105C Ayoub and Lost Array(dp+矩阵快速幂优化)
    牛客练习赛75——A广义肥波
    void * 指针和const 指针
    详解getchar()函数与缓冲区
    深入了解scanf() getchar()和gets()等函数之间的区别
    字符串和指针注意
    指针
    数组和字符串的小结
  • 原文地址:https://www.cnblogs.com/chenjy1225/p/9662129.html
Copyright © 2011-2022 走看看