下面我们来介绍在android手机中存储数据和文件的第二种方式:共享参数(sharedpreferences)方式。这种方式是读写键值对(key-value),适合存放一些信息量比较少的内容(基本类型变量)。
整体思路:新建一个MySharedpreference类,在这个类中定义一个saveMessage方法,将两个字符串存放于存储介质中,并返回是否存储成功,在这个类中定义一个getMessage方法,在这个方法中从共享参数中获得两个字符串,并返回一个map类型。创建一个继承AndroidTestCase的单元测试类MyTest,在这个类中定义一个save方法,在这个方法中实例化一个MySharedpreference对象,并调用里面的saveMessage方法,将两个字符串以共享参数的形式存储,在这个类中定义一个find方法,在这个方法中实例化一个MySharedpreference对象,并调用里面的getMessage方法,得到一个map类型的数据,将这个map类型的数据输出。注意:在清单文件中写单元测试的注册。并建议使用模拟器来测试,可以比较方便的查看数据存放的位置。
MySharedpreference.java文件:
public class MySharedpreference {
private Context context;
public MySharedpreference(Context context){
this.context=context;
}
public boolean saveMessage(String name,String pswd){
boolean flag=false;
// 定义文件名称的时候不允许写后缀名,定义为私有方式
SharedPreferences sharedPreferences=context.getSharedPreferences("userinfo", Context.MODE_PRIVATE);
// 对数据进行编辑,返回editor对象
SharedPreferences.Editor editor =sharedPreferences.edit();
editor.putString("name", name);
editor.putString("pswd", pswd);
flag=editor.commit();//将数据持久化到存储介质中
return flag;
}
public Map<String, Object> getMessage(){
Map<String, Object> map=new HashMap<String, Object>();
SharedPreferences sharedPreferences=context.getSharedPreferences("userinfo", Context.MODE_PRIVATE);
String name=sharedPreferences.getString("name", "");//如果取不到,那默认值为空
String pswd=sharedPreferences.getString("pswd", "");
map.put("name", name);
map.put("pswd", pswd);
return map;
}
}
MyTest.java文件:
public class MyTest extends AndroidTestCase {
private String TAG="MyTest";
public MyTest(){
}
public void save(){
Context context=getContext();
MySharedpreference mySharedpreference=new MySharedpreference(context);
boolean flag=mySharedpreference.saveMessage("damin", "123");
Log.i(TAG,"-->>"+flag);
}
public void find(){
Context context=getContext();
MySharedpreference sharedpreference=new MySharedpreference(context);
Map<String, Object> map=sharedpreference.getMessage();
Log.i(TAG, "-->>"+map.toString());
}
}
AndroidManifest.xml文件:
<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.example.android_sharedpreference" >
</instrumentation>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<uses-library android:name="android.test.runner"/>
<activity
android:name="com.example.android_sharedpreference.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>