码迷,mamicode.com
首页 > 移动开发 > 详细

Android SharedPreferences

时间:2018-09-17 15:23:17      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:tde   int   layout   class   ada   清除   alt   选择   clear   

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

Android SharedPreferences

标签:tde   int   layout   class   ada   清除   alt   选择   clear   

原文地址:https://www.cnblogs.com/chenjy1225/p/9662129.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!