Android学习 —— 数据的存储与访问方式二: SharedPreferences(偏好参数保存)

来源:互联网 发布:尺八制作数据 编辑:程序博客网 时间:2024/05/16 13:03


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;@Overridepublic 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();}}