android数据持久化方法:
第一种,最简单的方式,使用SharedPreferences
1.getPreferences (int mode)
通过Activity对象获取,获取的是本Activity私有的Preference,保存路径为/data/data/com.example.testandroid/shared_prefs,其中包名以自己实际的为准,保存为activity.xml,其中activity为本Activity名称。因此一个Activity只能有一个,属于这个Activity。
2.getSharedPreferences (String name, int mode)
因为Activity继承了ContextWrapper,因此也是通过Activity对象获取,但是属于整个应用程序,可以有多个,保存为name.xml。
3.PreferenceManager.getDefaultSharedPreferences(this);
PreferenceManager的静态函数,保存PreferenceActivity中的设置,属于整个应用程序,但是只有一个,Android会根据包名和PreferenceActivity的布局文件来起一个名字保存,比如我的为com.example.testandroid_preferences.xml
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
sp.edit().putBoolean("key", true).commit();
boolean bFLag = sp.getBoolean("key");
第二种,最熟悉的方式,使用FileInputStream,FileOutputStream,通过文件的读写来实现
public String readFile(String fileName) {
String res = null;
try {
File file = new File(fileName);
FileInputStream fis = new FileInputStream(file);
int length = fis.available();
byte[] buffer = new byte[length];
fis.read(buffer);
res = EncodingUtils.getString(buffer, "UTF-8");
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return res;
}
private void writeFile(String fileName, String strContent) {
try {
File file = new File(fileName);
FileOutputStream fos = new FileOutputStream(file);
byte[] bytes = strContent.getBytes();
fos.write(bytes);
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
第三种,可以使用SQLite数据库,针对数据量比较大的情况
第四种,可以使用ContentProvider,在不同应用程序之间共享数据
第一种,最简单的方式,使用SharedPreferences
1.getPreferences (int mode)
通过Activity对象获取,获取的是本Activity私有的Preference,保存路径为/data/data/com.example.testandroid/shared_prefs,其中包名以自己实际的为准,保存为activity.xml,其中activity为本Activity名称。因此一个Activity只能有一个,属于这个Activity。
2.getSharedPreferences (String name, int mode)
因为Activity继承了ContextWrapper,因此也是通过Activity对象获取,但是属于整个应用程序,可以有多个,保存为name.xml。
3.PreferenceManager.getDefaultSharedPreferences(this);
PreferenceManager的静态函数,保存PreferenceActivity中的设置,属于整个应用程序,但是只有一个,Android会根据包名和PreferenceActivity的布局文件来起一个名字保存,比如我的为com.example.testandroid_preferences.xml
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
sp.edit().putBoolean("key", true).commit();
boolean bFLag = sp.getBoolean("key");
第二种,最熟悉的方式,使用FileInputStream,FileOutputStream,通过文件的读写来实现
public String readFile(String fileName) {
String res = null;
try {
File file = new File(fileName);
FileInputStream fis = new FileInputStream(file);
int length = fis.available();
byte[] buffer = new byte[length];
fis.read(buffer);
res = EncodingUtils.getString(buffer, "UTF-8");
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return res;
}
private void writeFile(String fileName, String strContent) {
try {
File file = new File(fileName);
FileOutputStream fos = new FileOutputStream(file);
byte[] bytes = strContent.getBytes();
fos.write(bytes);
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
第三种,可以使用SQLite数据库,针对数据量比较大的情况
第四种,可以使用ContentProvider,在不同应用程序之间共享数据