Android提供给我们四种数据存储模式:Files,SharedPreferences,SQLite,Network。今天小编给大家重点介绍一下SharedPreferences.
SharedPreferences类似于我们常见的ini文件,用以保存应用程序的一些属性设置。在Android平台常用于存储比较简单的参数设置。比如boolean,int,float,long,String等数据.使用SharedPreferences保存数据,其实质是采用了xml文件存放数据,路径为:/data/data/<package name>/shared_prefs.
获取SharedPreferences的两种方式:
1 调用Context对象的getSharedPreferences()方法,调用Context对象的getSharedPreferences()方法获得的SharedPreferences对象可以被同一应用程序下的其他组件共享.
2 调用Activity对象的getPreferences()方法,调用Activity对象的getPreferences()方法获得的SharedPreferences对象只能在该Activity中使用
SharedPreferences的四种操作模式:
1.Context.MODE_PRIVATE
2.Context.MODE_APPEND
3.Context.MODE_WORLD_READABLE
4.Context.MODE_WORLD_WRITEABLE
Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容
Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件.
Context.MODE_WORLD_READABLE:表示当前文件可以被其他应用读取.
Context.MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入.
具体代码如下:
package com.example.demo_sharedpreferences;
/**
* @author Arthur Lee
* @time 05/29/2014
* */
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity {
private Button share_bt1,share_bt2;
Message msg = new Message();
Bundle data = new Bundle();
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch(msg.what){
case 0:
Toast.makeText(MainActivity.this, "保存成功",Toast.LENGTH_LONG).show();
break;
case 1:
Toast.makeText(MainActivity.this, "姓名:"+msg.getData().getString("name"),Toast.LENGTH_LONG).show();
break;
default:
break;
}
}};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
share_bt1 = (Button)findViewById(R.id.share_bt1);
share_bt2 = (Button)findViewById(R.id.share_bt2);
share_bt1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
/**
* 打开一个名字为“user”的preferences,如果该文件不存在,则创建它*/
SharedPreferences share = getSharedPreferences("user",Context.MODE_PRIVATE);
/**
* 设置编辑器,负责向当前的“user”中编辑并写入数据*/
SharedPreferences.Editor editor = share.edit();
/**
* 所有的数据以键值对的形式保存到SharedPreferences中,
* 可以保存的类型有布尔型,整型,字符串。*/
editor.putBoolean("flag", true);
editor.putBoolean("media", true);
editor.putString("name", "Arthur Lee");
editor.putInt("count", 1);
/**
* 将数据保存到“user”中*/
editor.commit();
/**
* 清除SharedPreferences中的数据*/
//editor.clear();
handler.sendEmptyMessage(0);
}
});
share_bt2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
SharedPreferences share = getSharedPreferences("user",Context.MODE_PRIVATE);
/**
* 获取保存在Preferences中的特定数据*/
String message = share.getString("name", "");
data.putString("name", message);
msg.what = 1;
msg.setData(data);
handler.sendMessage(msg);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
效果图如下所示:
最后还是以一句话结尾:我不是一名好的程序员,我只会默默奉献。