Android数据存储--SharedPreferences
SharedPreferences是Android系统提供的一个通用的数据持久化框架,用于存储和读取key-value类型的原始基本数据类型对,目前支持String、int、long、float、boolean等基本类型的存储,对于自定义的对象数据类型,无法使用SharedPreferences来存储。
SharedPreferences主要用于存储系统的配置信息。例如上次登录的用户名,上次最后设置的配置信息(如:是否打开音效、是否使用振动,小游戏的玩家积分等)。当再次启动程序后依然保持原有设置。SharedPreferences用键值对方式存储,方便写入和读取。
使用SharedPreferences的步骤
1、获取SharedPreferences对象
2、调用edit()方法获取SharedPreferences.Editor
3、通过SharedPreferences.Editor接口提供的put()方法对SharedPreferences进行更新
4、调用SharedPreferences.Editor的commit()或apply()方法,将更新提交到SharedPreferences中
apply (): 异步处理
commit(): 有返回值
布局文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/btn_save"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="onClick"
android:text="保存数据" />
<Button
android:id="@+id/btn_get"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="onClick"
android:text="获取数据" />
</LinearLayout>
逻辑代码
package com.example.week3_day3_sharepreferences;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.util.Log;
import android.view.View;
/**
* 数据存储之共享数据存储--SharedPreferences
* 主要用途:
* 保存用户名和密码,手势密码的开关,游戏中是否开启音乐
*/
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void onClick(View v) {
// 得到id
switch (v.getId()) {
// 保存数据
case R.id.btn_save:
/* *
参数1:name:保存数据文件的名称
参数2:mode:数据的标记
MODE_PRIVATE:数据只能被本应用程序读和写
MODE_APPEND:新内容追加到原内容之后
MODE_WORLD_REDABLE:能被其他程序读,但不能被写
MODE_WORLD_WRITEABLE:能被其他程序读和写
*/
//将数据保存到名为save.xml的文件中,保存路径为file explorer-->data-->data-->自己的包名-->share pre-->save.xml-->导出
//-----------第一种方式---------
// SharedPreferences preferences = getSharedPreferences("save",
// Context.MODE_PRIVATE);
//------------第二种方式-----------
SharedPreferences preferences=getPreferences(Context.MODE_PRIVATE);
Editor editer = preferences.edit();// 获取编辑者对象
editer.putBoolean("booleanType", true);// 存放布尔类型数据
editer.putFloat("floatType", 1.0f);// 存放float类型数据
editer.putInt("intType", 34);
editer.putLong("longType", 100000);
editer.putString("stringType", "你好");
/**
* 数据的存放格式
* <?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<float name="floatType" value="1.0" />
<string name="stringType">你好</string>
<int name="intType" value="34" />
<boolean name="booleanType" value="true" />
<long name="longType" value="100000" />
</map>
*/
// 提交数据
editer.commit();
break;
// 获取数据
case R.id.btn_get:
//-----------第一种方式---------可以获取其他类的数据
// SharedPreferences preferences2 = getSharedPreferences("save",
// Context.MODE_PRIVATE);
//------------第二种方式-----------只能获取本类的数据
//获取对象
SharedPreferences preferences2=getPreferences(Context.MODE_PRIVATE);
// 取出数据
boolean b = preferences2.getBoolean("booleanType", false);
int i = preferences2.getInt("intType", -1);
//打印日志
Log.i("SharedPreferences", b + "," + i);
break;
default:
break;
}
}
}