android 摘要----資料儲存全方案,詳解持久化技術
阿新 • • 發佈:2019-02-14
資料持久化:
只將那些記憶體中的瞬時資料儲存到儲存裝置中,保證即使在手機或電腦關機的情況下,這些資料也不會丟失。
1,檔案儲存:
是android中最基本的一種資料儲存方式,不對儲存內容進行任何格式化處理,所有詩句原封不動的儲存到檔案當中,適合儲存一些簡單的文字資料或二進位制資料。
下面是一段程式碼,展示如何將一段文字內容儲存到檔案中:
public void save(){
String data = "Data to save";
FileOutputStream out = null;
BufferedWriter writer = null;
try{
out = openFileOutput("data",Context.MODE_PRIVATE);
writer = new BufferedWriter(new OutputStreamWriter(out));
writer.write(data);
}catch(IOException e){
e.printStackTrace():
}finally{
try{
if(writer != null){
writer.close();
}
}catch(IOException e){
e.printStackTrace();
}
}
}
從檔案中讀取資料,程式碼如下:
public String load(){
FileInputStream in = null;
BufferedReader reader = null;
StringBuilder content = new StringBuilder();
try {
in = openFileInput("data");
reader = new BufferedReader(new InputStreamReader(in));
String line = "";
while((line = reader.readLine()) != null){
content.append(line);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(reader != null){
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return content.toString();
}
2, SharedPreferences 儲存
儲存方式:
通過鍵值對的方式進行儲存資料。
(1)得到SharedPreferences物件的方法:
1):Context 類中的getSharedPreferences()方法:
此方法接受兩個引數,第一個引數用於指定SharedPrerences 檔案的名稱,如果指定的檔案不存在則會建立一個。第二個引數用於指定操作模式,主要有兩種模式可以選擇,MODE_PRIVATE和MODE_MULTI_PROCESS。前者是預設操作模式,和直接傳入0效果一樣,表示只有當前的應用程式才可以對這個SharedPreferences檔案進行讀寫。後者一般是用於會有多個程序中對同一個SharedPreferences檔案進行讀寫的情況。
2):Activity類中的getPreferences()方法
3):PreferenceManager類中的getDefaultSharedPreference()方法
這是一個靜態方法,接受一個Context引數,並自動使用當前應用程式的包名作為字首來命名SharedPreferences檔案
得到SharedPreferences物件後,就可以開始儲存資料,主要步驟如下:
1,呼叫SharedPreferences 物件的edit()方法來獲取一個SharedPreference.Editor物件。
2,向 SharedPreferences.Editor 物件中新增資料,putBoolean()、putString()方法等,以此類推。
3,呼叫commit()方法將新增的資料提交,從而完成資料儲存操作。
public void onClick(View view) {
SharedPreferences.Editor editor =
getSharedPreferences("data",MODE_PRIVATE).edit();
editor.putString("name","Tom");
editor.putInt("age",28);
editor.putBoolean("married",false);
editor.commit();
}
讀取資料:
public void onClick(View view) {
SharedPreferences pref = getSharedPreferences("data",MODE_PRIVATE);
String name = pref.getString("name","");
int age = pref.getInt("age",0);
boolean married = pref.getBoolean("married",false);
Log.d("MainActivity","name is "+ name);
Log.d("MainActivity","age is " + age);
Log.d("MainActivity","married is " + married);
}
3,建立資料庫
SQLiteOpenHelper 類,藉助這個類可以對資料庫進行建立和升級。
SQLiteOpenHelper 是抽象類,要建立自己的幫助類去繼承它。
SQLiteOpenHelper兩個重要的例項方法:getReadableDatabase()和getWritableDatabase().這兩個方法都可以建立或者開啟一個現有的資料庫,並返回一個可對資料庫進行讀寫操作的物件。
4,升級資料庫
呼叫SQLiteOpenHelper內的onUpgrade()方法實現升級
5,使用事務
事務:
就是把許多事情當成一件事來處理。可以理解為同一條繩上的螞蚱。
有點:
。在android應用開發中,經常會遇到需要進行資料庫操作的時候,Android中進行資料庫操作是非常慢的(尤其是寫操作),打包成事務能夠有效地提高效率。
。保證資料的一致性,有關事務的操作全部完成後才提交(生效),否則就進行事務的回滾操作。
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.beginTransaction() //開啟事務
db.endTransaction() //結束事務
只將那些記憶體中的瞬時資料儲存到儲存裝置中,保證即使在手機或電腦關機的情況下,這些資料也不會丟失。
1,檔案儲存:
是android中最基本的一種資料儲存方式,不對儲存內容進行任何格式化處理,所有詩句原封不動的儲存到檔案當中,適合儲存一些簡單的文字資料或二進位制資料。
下面是一段程式碼,展示如何將一段文字內容儲存到檔案中:
public void save(){
String data = "Data to save";
FileOutputStream out = null;
BufferedWriter writer = null;
try{
out = openFileOutput("data",Context.MODE_PRIVATE);
writer = new BufferedWriter(new OutputStreamWriter(out));
writer.write(data);
}catch(IOException e){
e.printStackTrace():
}finally{
try{
if(writer != null){
writer.close();
}
}catch(IOException e){
e.printStackTrace();
}
}
}
從檔案中讀取資料,程式碼如下:
public String load(){
FileInputStream in = null;
BufferedReader reader = null;
StringBuilder content = new StringBuilder();
try {
in = openFileInput("data");
reader = new BufferedReader(new InputStreamReader(in));
String line = "";
while((line = reader.readLine()) != null){
content.append(line);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(reader != null){
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return content.toString();
}
2, SharedPreferences 儲存
儲存方式:
通過鍵值對的方式進行儲存資料。
(1)得到SharedPreferences物件的方法:
1):Context 類中的getSharedPreferences()方法:
此方法接受兩個引數,第一個引數用於指定SharedPrerences 檔案的名稱,如果指定的檔案不存在則會建立一個。第二個引數用於指定操作模式,主要有兩種模式可以選擇,MODE_PRIVATE和MODE_MULTI_PROCESS。前者是預設操作模式,和直接傳入0效果一樣,表示只有當前的應用程式才可以對這個SharedPreferences檔案進行讀寫。後者一般是用於會有多個程序中對同一個SharedPreferences檔案進行讀寫的情況。
2):Activity類中的getPreferences()方法
3):PreferenceManager類中的getDefaultSharedPreference()方法
這是一個靜態方法,接受一個Context引數,並自動使用當前應用程式的包名作為字首來命名SharedPreferences檔案
得到SharedPreferences物件後,就可以開始儲存資料,主要步驟如下:
1,呼叫SharedPreferences 物件的edit()方法來獲取一個SharedPreference.Editor物件。
2,向 SharedPreferences.Editor 物件中新增資料,putBoolean()、putString()方法等,以此類推。
3,呼叫commit()方法將新增的資料提交,從而完成資料儲存操作。
public void onClick(View view) {
SharedPreferences.Editor editor =
getSharedPreferences("data",MODE_PRIVATE).edit();
editor.putString("name","Tom");
editor.putInt("age",28);
editor.putBoolean("married",false);
editor.commit();
}
讀取資料:
public void onClick(View view) {
SharedPreferences pref = getSharedPreferences("data",MODE_PRIVATE);
String name = pref.getString("name","");
int age = pref.getInt("age",0);
boolean married = pref.getBoolean("married",false);
Log.d("MainActivity","name is "+ name);
Log.d("MainActivity","age is " + age);
Log.d("MainActivity","married is " + married);
}
3,建立資料庫
SQLiteOpenHelper 類,藉助這個類可以對資料庫進行建立和升級。
SQLiteOpenHelper 是抽象類,要建立自己的幫助類去繼承它。
SQLiteOpenHelper兩個重要的例項方法:getReadableDatabase()和getWritableDatabase().這兩個方法都可以建立或者開啟一個現有的資料庫,並返回一個可對資料庫進行讀寫操作的物件。
4,升級資料庫
呼叫SQLiteOpenHelper內的onUpgrade()方法實現升級
5,使用事務
事務:
就是把許多事情當成一件事來處理。可以理解為同一條繩上的螞蚱。
有點:
。在android應用開發中,經常會遇到需要進行資料庫操作的時候,Android中進行資料庫操作是非常慢的(尤其是寫操作),打包成事務能夠有效地提高效率。
。保證資料的一致性,有關事務的操作全部完成後才提交(生效),否則就進行事務的回滾操作。
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.beginTransaction() //開啟事務
db.endTransaction() //結束事務