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