zoukankan      html  css  js  c++  java
  • Android SharedPreferences基本用法

    使用SharedPreferences

    SharedPreferences是Android平台上一个轻量级的存储类, 用来保存应用的一些常用配置.

    SharedPreferences与Editor简介

    主要用于保存配置文件, 保存数据的形式是key-value对.

    SharedPreferences接口主要负责读取应用程序的Preferences数据,常用方法:

    • boolean contains(String key) 是否包含特定key的数据.
    • abstract Map<String, ?> getAll() 获取SharedPreferences数据里的全部的key-value对.
    • boolean getInt(String key, int defValue) 获取指定key对应的value. 如果key不存在, 则返回默认值defValue. 其他int可以是boolean, float, long...

    SharedPreferences接口没有写入数据的能力, 而是通过调用SharedPreferences的内部接口, SharedPreferences调用edit()方法获得对应的Editor对象. Editor接口提供如下方法.

    • Editor clear() 清空SharedPreferences数据.
    • Editor putString(String key, @Nullale String value) 向SharedPreferences存入指定key对应的数据. 其中putString可以是putInt, putFloat...
    • Editor remove(String key) 删除指定key对应的数据项.
    • boolean commit() 当Editor编辑完成后, 调用此方法提交.

    返回值是Editor, return Returns a reference to the same Editor object, so you can chain put calls together.

    获取SharedPref实例的方法有两种:

    1. 调用Context对象的SharedPreferences getSharedPreferences(String name, int mode)
    2. 调用Activity对象的SharedPreferences getPreferences(int mode)

    name 表示存储文件的名字, 第二种方法采用反射方式获取类名作为默认名.

    mode 参数表示操作模式:

    • Context.MODE_PRIVATE 默认操作模式, 数据只能被本应用读写.
    • Context.MODE_WORLD_READABLE (不推荐)可以被其他应用读取.
    • Context.MODE_WORLD_WRITEABLE (不推荐)可以被其他应用写入.

    SharedPreferences 的存储位置和格式

    SharedPreferences数据总是保存在/data/data/<package name>/shared_pref/目录下, 总是以XML格式保存.

    <?xml version='1.0' encoding='utf-8' standalone='yes' ?>
    <map>
    <int name="color" value="-1611696" />
    </map>
    

    示例代码

    public class MainActivity extends AppCompatActivity {
    
        private static final int RED = 0xffff0000;
        private static final int BLUE = 0xff00fff0;
    
        SharedPreferences mPreferences;
        SharedPreferences.Editor mEditor;
    
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            final LinearLayout bg = (LinearLayout) findViewById(R.id.background);
            Button button = (Button) findViewById(R.id.red_button);
            Button blueButton = (Button) findViewById(R.id.blue_button);
            //获取只能被本程序读写的SharedPreferences对象
            mPreferences = getSharedPreferences("test", Context.MODE_PRIVATE);
            mEditor = mPreferences.edit();
            // 读取配置文件中'color'数据
            int color = mPreferences.getInt("color", 0xffffffff);
            // 应用配置文件
            bg.setBackgroundColor(color);
    
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    mEditor.putInt("color", RED);
                    mEditor.commit();
                    bg.setBackgroundColor(RED);
                }
            });
    
            blueButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    mEditor.putInt("color", BLUE);
                    mEditor.apply();
                    bg.setBackgroundColor(BLUE);
                }
            });
    
            mEditor.putString("time", (new Date()).toString());
            mEditor.commit();
        }
    }
    
  • 相关阅读:
    观察者模式
    系统高并发网络图书室
    java keytool
    ant 脚本使用技巧
    Unsupported major.minor version 51.0 错误解决方案
    Oracle的网络监听配置
    win8 JDK环境变量不生效
    javax.mail
    xmlrpc
    网络时间同步
  • 原文地址:https://www.cnblogs.com/fortitude/p/5594162.html
Copyright © 2011-2022 走看看