天天看點

【存儲】Android中的8種資料存儲方式

本文介紹Android中的5種資料存儲方式。

        資料存儲在開發中是使用最頻繁的,在這裡主要介紹Android平台中實作資料存儲的5種方式,分别是:

        1 使用SharedPreferences存儲資料;

        2 檔案存儲資料;

        3 SQLite資料庫存儲資料;

        4 使用ContentProvider存儲資料;

        6 網絡存儲資料;

         下面将為大家一一詳細介紹。

        第一種: 使用SharedPreferences存儲資料

       SharedPreferences是Android平台上一個輕量級的存儲類,主要是儲存一些常用的配置比如視窗狀态,一般在Activity中 重載視窗狀态onSaveInstanceState儲存一般使用SharedPreferences完成,它提供了Android平台正常的Long長 整形、Int整形、String字元串型的儲存。

          它是什麼樣的處理方式呢? SharedPreferences類似過去Windows系統上的ini配置檔案,但是它分為多種權限,可以全局共享通路,android123提示最終是以xml方式來儲存,整體效率來看不是特别的高,對于正常的輕量級而言比SQLite要好不少,如果真的存儲量不大可以考慮自己定義檔案格式。xml 處理時Dalvik會通過自帶底層的本地XML Parser解析,比如XMLpull方式,這樣對于記憶體資源占用比較好。

          它的本質是基于XML檔案存儲key-value鍵值對資料,通常用來存儲一些簡單的配置資訊。        其存儲位置在/data/data/<包名>/shared_prefs目錄下。

        SharedPreferences對象本身隻能擷取資料而不支援存儲和修改,存儲修改是通過Editor對象實作。                實作SharedPreferences存儲的步驟如下:

          一、根據Context擷取SharedPreferences對象

          二、利用edit()方法擷取Editor對象。

          三、通過Editor對象存儲key-value鍵值對資料。

          四、通過commit()方法送出資料。

         下面是示例代碼:

  1. public class MainActivity extends Activity { 
  2. @Override
  3. public void onCreate(Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. setContentView(R.layout.main);
  6. //擷取SharedPreferences對象
  7. Context ctx = MainActivity.this; 
  8. SharedPreferences sp = ctx.getSharedPreferences("SP", MODE_PRIVATE);
  9. //存入資料
  10. Editor editor = sp.edit();
  11. editor.putString("STRING_KEY", "string");
  12. editor.putInt("INT_KEY", 0);
  13. editor.putBoolean("BOOLEAN_KEY", true);
  14. editor.commit();
  15. //傳回STRING_KEY的值
  16. Log.d("SP", sp.getString("STRING_KEY", "none"));
  17. //如果NOT_EXIST不存在,則傳回值為"none"
  18. Log.d("SP", sp.getString("NOT_EXIST", "none"));
  19. }
  20. }

複制代碼 這段代碼執行過後,即在/data/data/com.test/shared_prefs目錄下生成了一個SP.xml檔案,一個應用可以建立多個這樣的xml檔案。         SharedPreferences對象與SQLite資料庫相比,免去了建立資料庫,建立表,寫SQL語句等諸多操作,相對而言更加友善,簡潔。但是SharedPreferences也有其自身缺陷,比如其職能存儲boolean,int,float,long和String五種簡單的資料類型,比如其無法進行條件查詢等。是以不論SharedPreferences的資料存儲操作是如何簡單,它也隻能是存儲方式的一種補充,而無法完全替代如SQLite資料庫這樣的其他資料存儲方式。

           第二種: 檔案存儲資料

        關于檔案存儲,Activity提供了openFileOutput()方法可以用于把資料輸出到檔案中,具體的實作過程與在J2SE環境中儲存資料到檔案中是一樣的。

        檔案可用來存放大量資料,如文本、圖檔、音頻等。

        預設位置:/data/data/<包>/files

  • @Override
  • public void onCreate(Bundle savedInstanceState) {
  • super.onCreate(savedInstanceState);
  • setContentView(R.layout.main);
  • HttpPost request = new HttpPost(SERVER_URL); //根據内容來源位址建立一個Http請求
  • // 添加一個變量 
  • List<NameValuePair> params = new ArrayList<NameValuePair>(); 
  • // 設定一個地區名稱
  • params.add(new BasicNameValuePair("PlaceName", "NewYork")); //添加必須的參數
  • try { 
  • //設定參數的編碼
  • request.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8)); 
  • //發送請求并擷取回報
  • HttpResponse httpResponse = new DefaultHttpClient().execute(request);
  • // 解析傳回的内容
  • if(httpResponse.getStatusLine().getStatusCode() != 404){ 
  • String result = EntityUtils.toString(httpResponse.getEntity()); 
  • System.out.println(result);
  • }
  • } catch (Exception e) {
  • e.printStackTrace();
  • }
  • }