SharedPreferences的概念和使用

来源:互联网 发布:软件数据储存在哪里 编辑:程序博客网 时间:2024/05/18 02:02

●前言:

在很多情况下,APP有少量的数据需要存储,而且这些数据的格式很简单,都是普通的字符串、标量类型的值等,比如APP的各种配置信息(设置)、小游戏的玩家的积分等,对于这种数据,Android提供了SharedPreferences进行保存。

SharedPreferences与Editor简介:

SharedPreferences保存数据主要类似于配置信息格式的数据,因此它保存的数据主要是简单的Key-valuue对。

SharedPreferences接口主要负责读取APPPreferences数据,它提供了如下常用的方法来访问SharedPreferences中的Key-valuue对。

boolean contains(String key):主要判断SharedPreferences是否包含特定的key的数据。

abstract Map<String ,?>getAll:获取SharedPreferences数据里的全部的Key-valuue对。

boolean gerXxx(String key,xxx defValue):获取SharedPreferences数据里指定的key对应的value。如果该key不存在,则返回默认值。其中xxx可以是booleanfloatintlongString等各基本类型。

SharedPreferences接口本身并没有提供写入数据的能力,而是通过SharedPreferences的内部接口,SharedPreferences调用edit()方法即可获取它所对应的Editor对象。Editor提供了如下方法来向SharedPreferences写入数据。

①SharedPreferences.Editor clear:清空SharedPreferences里所有数据。

②SharedPreferences.Editor putXxx(String keyxxx value):SharedPreferences存入指定key对应的数据。其中xxx可以是booleanfloatintlongString等各种基本类型的值。

③SharedPreferences.Editor remove(String key):删除SharedPreferences里指定key对应的数据项。

boolean commit():Editor编辑完成后,调用该方法提交修改。

SharedPreferences本身是一个接口,程序无法直接创建SharedPreferences实例,只能通过Context提供的getSharedPreferences(String nameint mode)方法来获取SharedPreferences实例,该方法的第二参数支持如下几个值。

Context.MODE_PRIVATE:指定该SharedPreferences数据只能被本APP读写。

Context.MODE_WORLD_READABLE:指定该SharedPreferences数据能被其他APP读,但不能写。

Context.MODE_WORLD_WRITEABLE:指定该SharedPreferences数据能被其他APP读写。

●实例代码

package com.wwc.sharedpreferences;

import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import android.app.Activity;
import android.content.SharedPreferences;

public class MainActivity extends Activity  {
    
    private EditText editText;
    private Button storage;
    private Button acquire;
    private TextView textView;
    private String content;
    private SharedPreferences preferences;
    private SharedPreferences.Editor editor;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editText= (EditText) findViewById(R.id.editText);
        storage= (Button) findViewById(R.id.storage);
        acquire= (Button) findViewById(R.id.acquire);
        textView= (TextView) findViewById(R.id.tv);
        //创建
         preferences=getSharedPreferences("editText_content", MODE_PRIVATE);
         editor=preferences.edit();
       
        //存储editText的值
        storage.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                 //拿到editText的值
                content=editText.getText().toString();
                editor.putString("content", content);
                editor.commit();
                Toast.makeText(MainActivity.this, "保存成功", Toast.LENGTH_LONG).show();
            }
        });
        
        acquire.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                String result=preferences.getString("content", "没有获取到数据!");
                textView.setText(result);
            }
        });
        
    }
    
}


效果图如下:

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


从上面的文件可看出,SharedPreferences数据文件的根元素是<map../>元素,该元素里每一个子元素代表一个key-value对。



0 0
原创粉丝点击