SharedPreferences
主要用于软件配置参数的保存,它是一个轻量级的存储类,特别适用于保存软件配置参数,使用该类保存数据,数据存放的文件类型为XML,文件存放路径:
/data/data/<package name>/shared_prefs目录下。
因为SharedPreferences背后是使用xml文件保存数据,getSharedPreferences(name,mode)方法的第一个参数用于指定该文件的名称,名称不用带后缀,后缀会由Android自动加上。
方法的第二个参数指定文件的操作模式,共有四种操作模式,这四种模式前面介绍使用文件方式保存数据时已经讲解过。
另外Activity还提供了另一个getPreferences(mode)方法操作SharedPreferences,这个方法默认使用当前类不带包名的类名作为文件的名称。
使用SharedPreferences进行数据存取
示例:
获取本地时间,通过SharedPreferences存储,然后从SharedPreferences中取出时间,Toaster在手机屏幕上
配置文件
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TableRow>
<Button
android:id="@+id/read"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/btnRead" />
<Button
android:id="@+id/write"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/btnWrite" />
</TableRow>
<EditText
android:id="@+id/edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</TableLayout>
MainActivity
import java.text.SimpleDateFormat;
import java.util.Date;
import android.app.Activity;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class SharePreferencesSampleActivity extends Activity implements OnClickListener{
private SharedPreferences preferences;
private Button readBtn, writeBtn;
private Editor editor;
private EditText edit;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//获取组件
Button readBtn = (Button) findViewById(R.id.read);
Button writeBtn = (Button) findViewById(R.id.write);
edit = (EditText) findViewById(R.id.edit);
//注册监听
readBtn.setOnClickListener(this);
writeBtn.setOnClickListener(this);
//获取一个SharedPreferences对象,第一个参数为要生成的文件名,第二个参数为文件模式
preferences = getSharedPreferences("myPreference", MODE_PRIVATE);
editor = preferences.edit();//获取编辑器
}
public void onClick(View v) {
switch(v.getId()){
case R.id.write:
writeInfo();
break;
case R.id.read:
readInfo();
break;
}
}
//向SharedPreferences中写入信息
public void writeInfo(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
editor.putString("time", sdf.format(new Date()));
editor.putInt("random", (int)(Math.random()*100));
editor.commit();
}
//读取SharedPreferences中的信息
private void readInfo(){
SharedPreferences preferences = getSharedPreferences("myPreference", MODE_PRIVATE);
String date = preferences.getString("time", null);
int radom = preferences.getInt("random", 0);
edit.setText(date + " " + radom );
Toast.makeText(SharePreferencesSampleActivity.this, "时间为:" + date + " 随机数:" + radom , Toast.LENGTH_SHORT).show();
}
}