1. 程式人生 > >android提供的5種儲存方式

android提供的5種儲存方式

一、最簡單的儲存SharedPreferences

      SharedPreferences是Android提供用來儲存一些簡單的配置資訊的一種機制,它以鍵值對的方式儲存,經常用於儲存常見的歡迎語、登入使用者名稱和密碼等資訊。

      SharedPreferences提供了Android平臺常規的Long長整型、Int整型、String字串型的儲存。兩個Activity之間的資料傳遞除了可以通過Intent來傳遞外,還可以使用SharedPreferences來共享資料的方式實現。

      在Activity1中編寫如下程式碼:

    Editor sharedata = getSharedPreferences("data",0).edit();

        sharedata.putString("item","getSharedPreferences");

        sharedata.commit();

      在Activity2中編寫如下程式碼:

   SharedPreference sharedata = getSharedPreferences("data",0);

        String data = sharedata.getString("item",null);

        Log.v("cola","data="+data);

      最後通過以下Java程式碼將資料顯示出來:

   <SPAN class = hilitel>SharedPreferences</SPAN>sharedata = 

getSharedPreferences("data",0);

        String data = sharedata.getString("item",null);

        Log.v("cola","data="+data);

二、檔案儲存

      和傳統的Java中實現I/O的程式類似,在Android中,提供了openFileInput和openFileOuput方法來讀取裝置上的檔案:

String FILE_NAME = "tempfile.tmp";                           // 確定要進行檔案操作的檔名

        // 初始化

        FileOutputStream fos = openFileOutput(FILE_NAME,Context.MODE_PRIVATE);

        FileInputStream fIs = openFileOutput(FILE_NAME);    // 建立寫入流程式碼解釋

通過上述程式碼只支援讀取該應用目錄下的檔案,而讀取非其自身目錄下的檔案時將會丟擲異常。如果呼叫FileOutputStream時指定的檔案不存在,則Android會自動建立,並且在預設情況下,寫入時會覆蓋原檔案的內容,如果想要把新寫入的內容附加到原檔案內容後面,可以指定其模式為Context.MODE_APPEND。在預設情況下,使用openFileOuput方法建立的檔案只能被其呼叫的應用使用,而其他應用無法讀取這個檔案。如果需要在不同的應用中共享資料,可以使用Content Provide實現。

    如果應用需要一些額外的資原始檔,例如,一些用來測試使用者寫的音樂播放器是否可以正常工作的MP3檔案,可以將這些檔案放在應用程式的/res/raw/下,如mydatafile.mp3,那麼就可以在應用中使用getResources獲取資源後,以openRawResource方法(不帶字尾的資原始檔名)開啟這個檔案,實現程式碼如下所示:

        Resources myResources = getResources();

        InputStream myFile = myResources.openRawResource(R.raw.myfilename);

三、最常用的SQLite

      SQLite是一個輕量級的嵌入式資料庫,是Andriod所帶的一個標準的資料庫,只有五種資料型別,分別是:NULL(空值)、INTEGER(整數)、REAL(浮點數)、TEXT(字串)、BLOB(二進位制資料其支援統一的SQL語句,可以利用SQL語句對資料進行增、刪、改、查。

      使用DatabaseHelper類繼承SQliteOpenHelper類,並重寫onCreate和onUpgrade方法。在onCreate()方法中首先構造一條SQL語句,然後呼叫db.execSQL(sql)執行SQL語句。SQliteOpenHelper是一個輔助類,此類主要用於生成一個數據庫,並對資料庫的版本進行管理。當呼叫這個類的方法getWritableDatabase()或getReadableDatabasw()方法時,如果當時沒有資料,那麼Android系統就會自動生成一個數據庫。

四、ContentProvider儲存

      Android中的兩個程式之間進行資料交換就是通過ContentProvider實現的。ContentProvider類實現了一組標準的方法介面,從而能夠讓其他的應用儲存或讀取此Content Provider的各種資料型別。在程式內可以通過實現Content Provider的抽象介面將自己的資料顯示出來。外界可以通過這套標準、統一的介面和程式中的資料實現互動,既可以讀取程式中的資料,也可以刪除程式中的資料。

      比較常見的介面是ContentResolver,外部程式可以通過ContentResolver介面訪問ContentProvider提供的資料。在Activity中可以通過getContentResolver()得到當前應用的ContentResolver例項。ContentResolver提供的介面需要和ContentProvider中需要實現的介面相對應,常用的介面主要有以下幾個:

        query(Uri uri, String[] projection, String selection, String[] selectionArgs,StringsortOrder):通過Uri進行查詢,返回一個Cursor;

        insert(Uri url, ContentValues values):將一組資料插入到Uri指定的地方

        updata(Uri uri, ContentValues values, String where, String[] selectionArgs):更新Uri指定位置的資料

        delete(Uri url, String where, String[] selectionArgs):刪除指定Uri且符合一定條件的資料。

五、網路儲存

網路儲存即通過網路來實現資料的儲存和獲取,可以呼叫WebService返回的資料或是解析HTTP協議實現網路資料互動。具體需要熟悉java.net.*,Android.net.*這兩個包的內容。