本文共 3743 字,大约阅读时间需要 12 分钟。
1、SharedPreferences是什么?
数据持久化 2、SharedPreferences适用于哪些地方? 保存比较简单的数据代码里的全局变量、局部变量是放在内存里的,当页面被关闭后,内存就被释放了,全局变量、局部变量值被销毁了;所以有时我们需要保存一些数据,下次再读取ta,比如登录信息。
快捷键:提取为方法 command+option+m;
保存数据:
/* * 保存数据 * */ private void saveData2Preferences() { //系统会自动创建xml文件,文件名preference_name; //1、打开Preferences,名称为preference_name,如果存在则打开它,否则创建新的Preferences SharedPreferences sharedPreferences = getSharedPreferences("preference_name",MODE_PRIVATE); //2、让preference_name处于编辑状态 SharedPreferences.Editor editor = sharedPreferences.edit(); //3、存放数据 editor.putString(TEXT_VIEW_DATA,mDataString); //4、完成提交 editor.apply(); }
以上,可以将数据保存到文件名为preference_name里,文件在data/data/包名/,目录下;终端命令查看文件:
adb shell
cd data/data/ cd com.example.chenjinhua.sharedpreferences vi 文件名 退出vi命令:按Esc,然后 :q! 读取数据
/* * 读取数据 * */ private void setData() { //1、获取Preferences SharedPreferences sharedPreferences = getSharedPreferences("preference_name",MODE_PRIVATE); //2、取出数据 mDataString = sharedPreferences.getString(TEXT_VIEW_DATA,"10"); mEditText_data.setText(mDataString); mTextView_second.setText(mDataString); }
完整的代码为:
package com.example.chenjinhua.sharepreferences;import android.content.SharedPreferences;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;/** * Created by chenjinhua on 16/3/30. */public class SecondActivity extends AppCompatActivity implements View.OnClickListener { public static final String TEXT_VIEW_DATA = "textView_data"; private EditText mEditText_data; private TextView mTextView_second; private Button mButton_confirm; private String mDataString; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.layout_shareprefs_textview); Log.i("MainActivity", "SecondActivity"); findViews(); mButton_confirm.setOnClickListener(this); setData(); } /* * 读取数据 * */ private void setData() { SharedPreferences sharedPreferences = getSharedPreferences("preference_name",MODE_PRIVATE); mDataString = sharedPreferences.getString(TEXT_VIEW_DATA,"10"); mEditText_data.setText(mDataString); mTextView_second.setText(mDataString); } private void findViews() { mEditText_data = (EditText) findViewById(R.id.editText_data); mButton_confirm = (Button) findViewById(R.id.button_confirm); mTextView_second = (TextView) findViewById(R.id.textView_second); } @Override public void onClick(View view) { switch (view.getId()) { case R.id.button_confirm: mDataString = mEditText_data.getText().toString(); mTextView_second.setText(mDataString); saveData2Preferences(); break; } } /* * 保存数据 * */ private void saveData2Preferences() { //系统会自动创建xml文件,文件名preference_name, SharedPreferences sharedPreferences = getSharedPreferences("preference_name",MODE_PRIVATE); SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putString(TEXT_VIEW_DATA,mDataString); editor.apply(); }}
如何创建?
如何保存? 如何修改?修改就是再put一次,给同样的key不同的value,如下
editor.putString(TEXT_VIEW_DATA,value1); editor.putString(TEXT_VIEW_DATA,value2);
如何删除?
editor.remove(xxx); //删除key为xxx对应的值
注意:
editor.commit(); //同步写数据editor.apply();//1、另开一个线程,异步写数据,不会占用UI线程;2、和网络相关、IO操作相关,都要用异步。
在data/data/文件夹里写了一个文件。
如何清除缓存?
adb clear
练习:
做一个小应用,启动时有2张引导界面,只有第一次启动时显示,下一次启动不会显示。转载地址:http://keani.baihongyu.com/