Aandroid 儲存方式

2021-08-03 13:55:49 字數 3458 閱讀 5394

第一種: 使用sharedpreferences儲存資料

適用範圍:儲存少量的資料,且這些資料的格式非常簡單:字串型、基本型別的值。比如應用程式的各種配置資訊(如是否開啟音效、是否使用震動效果、小遊戲的玩家積分等),解鎖口 令密碼等

核心原理:儲存基於xml檔案儲存的key-value鍵值對資料,通常用來儲存一些簡單的配置資訊。通過ddms的file explorer面板,展開檔案瀏覽樹,很明顯sharedpreferences資料總是儲存在/data/data//shared_prefs目錄下。

sharedpreferences物件本身只能獲取資料而不支援儲存和修改,儲存修改是通過sharedpreferences.edit()獲取的內部介面editor物件實現。

sharedpreferences本身是一 個介面,程式無法直接建立sharedpreferences例項,只能通過context提供的getsharedpreferences(string name, int mode)方法來獲取sharedpreferences例項,該方法中name表示要操作的xml檔名,第二個引數具體如下:

context.mode_private: 指定該sharedpreferences資料只能被本應用程式讀、寫。

context.mode_world_readable:  指定該sharedpreferences資料能被其他應用程式讀,但不能寫。

context.mode_world_writeable:  指定該sharedpreferences資料能被其他應用程式讀,寫

editor有如下主要重要方法:

sharedpreferences.editor clear():清空sharedpreferences裡所有資料

sharedpreferences.editor put***(string key , *** value): 向sharedpreferences存入指定key對應的資料,其中*** 可以是boolean,float,int等各種基本型別據

sharedpreferences.editor remove(): 刪除sharedpreferences中指定key對應的資料項

boolean commit(): 當editor編輯完成後,使用該方法提交修改

讀寫其他應用的sharedpreferences: 步驟如下

1、在建立sharedpreferences時,指定mode_world_readable模式,表明該sharedpreferences資料可以被其他程式讀取

2、建立其他應用程式對應的context:

3、使用其他程式的context獲取對應的sharedpreferences

sharedpreferences read = pvcount.getsharedpreferences("lock", context.mode_world_readable);

4、如果是寫入資料,使用editor介面即可,所有其他操作均和前面一致。

第二種: 檔案儲存資料

核心原理: context提供了兩個方法來開啟資料檔案裡的檔案io流 fileinputstream openfileinput(string name); fileoutputstream(string name , int mode),這兩個方法第乙個引數 用於指定檔名,第二個引數指定開啟檔案的模式。具體有以下值可選:

mode_world_readable:表示當前檔案可以被其他應用讀取;

mode_world_writeable:表示當前檔案可以被其他應用寫入。

除此之外,context還提供了如下幾個重要的方法:

getdir(string name , int mode):在應用程式的資料資料夾下獲取或者建立name對應的子目錄

file getfilesdir():獲取該應用程式的資料資料夾得絕對路徑

string filelist():返回該應用資料資料夾的全部檔案

讀寫sdcard上的檔案

其中讀寫步驟按如下進行:

1、呼叫environment的getexternalstoragestate()方法判斷手機上是否插了sd卡,且應用程式具有讀寫sd卡的許可權,如下**將返回true

environment.getexternalstoragestate().equals(environment.media_mounted)

2、呼叫environment.getexternalstoragedirectory()方法來獲取外部儲存器,也就是sd卡的目錄,或者使用"/mnt/sdcard/"目錄

3、使用io流操作sd卡上的檔案 

注意點:手機應該已插入sd卡,對於模擬器而言,可通過mksdcard命令來建立虛擬儲存卡

必須在androidmanifest.xml上配置讀寫sd卡的許可權

android:name="android.permission.mount_unmount_filesystems"/>

android.permission.write_external_storage"/>

第三種:sqlite儲存資料

sqlite是輕量級嵌入式

資料庫引擎,它支援 sql 語言,並且只利用很少的記憶體就有很好的效能。現在的主流移動裝置像android、iphone等都使用sqlite作為複雜資料的儲存引擎,在我們為移動裝置開發應用程式時,也許就要使用到sqlite來儲存我們大量的資料,所以我們就需要掌握移動裝置上的sqlite開發技巧

sqlitedatabase類為我們提供了很多種方法,上面的**中基本上囊括了大部分的資料庫操作;對於新增、更新和刪除來說,我們都可以使用

1

db.executesql(string sql);

2 db.executesql(string sql, object bindargs);//

sql語句中使用佔位符,然後第二個引數是實際的引數集

除了統一的形式之外,他們還有各自的操作方法:

1

db.insert(string table, string nullcolumnhack, contentvalues values);

2db.update(string table, contentvalues values, string whereclause, string whereargs);

3 db.delete(string table, string whereclause, string whereargs);

以上三個方法的第乙個引數都是表示要操作的表名;insert中的第二個引數表示如果插入的資料每一列都為空的話,需要指定此行中某一列的名稱,系統將此列設定為null,不至於出現錯誤;insert中的第三個引數是contentvalues型別的變數,是鍵值對組成的map,key代表列名,value代表該列要插入的值;update的第二個引數也很類似,只不過它是更新該欄位key為最新的value值,第三個引數whereclause表示where表示式,比如「age > ? and age < ?」等,最後的whereargs引數是佔位符的實際引數值;delete方法的引數也是一樣

堆 棧 動態儲存方式 靜態儲存方式

動態儲存方式 所謂動態儲存方式是指在程式執行期間根據需要進行動態的分配儲存空間的方式。動態儲存變數是在程式執行過程中,使用它時才分配儲存單元,使用完畢立即釋放。典型的例子是函式的形式引數,在函式定義時並不給形參分配儲存單元,只是在函式被呼叫時,才予以分配,呼叫函式完畢立即釋放。如果乙個函式被多次呼叫...

堆 棧 動態儲存方式 靜態儲存方式

熱度 3 已有 358 次閱讀 2011 1 14 00 32 動態儲存方式 所謂動態儲存方式是指在程式執行期間根據需要進行動態的分配儲存空間的方式。動態儲存變數是在程式執行過程中,使用它時才分配儲存單元,使用完畢立即釋放。典型的例子是函式的形式引數,在函式定義時並不給形參分配儲存單元,只是在函式被...

動態儲存方式和靜態儲存方式

從變數的作用域的角度來觀察,變數可以分為全域性變數和區域性變數 從變數值存在的時間 即生存期 觀察,變數的儲存有兩種不同的方式 靜態儲存方式和動態儲存方式 使用者區程式區 靜態儲存區 動態儲存區 資料存放在靜態儲存區和動態儲存區 靜態儲存區 全域性變數全部儲存在靜態儲存區 程式開始執行時給全域性變數...