博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SharedPreferences
阅读量:4084 次
发布时间:2019-05-25

本文共 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/

你可能感兴趣的文章
迪杰斯特拉算法解析
查看>>
1005. K 次取反后最大化的数组和 VS 1002.查找常用字符
查看>>
Parcelable传个Map的简单应用
查看>>
GNU Radio: USRP2 and N2x0 Series
查看>>
网络对抗作业 一
查看>>
STL列表链式前向星
查看>>
curl以cookie的方式登录
查看>>
打地鼠游戏(3)
查看>>
<context-param>与<init-param>的区别与作用
查看>>
nodejs03中间件 -2 path、fs,multer
查看>>
Redis
查看>>
计算编辑距离
查看>>
新手学习Linux之快速上手分析
查看>>
C语言变量的初始化
查看>>
札记:Property动画
查看>>
获取CentOS 6
查看>>
C/C++中字符串和数字互转小结
查看>>
IOS文件下载
查看>>
第三次作业
查看>>
angularjs之事件绑定、解除事件绑定
查看>>