Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android 數據存儲

Android 數據存儲

編輯:關於Android編程

Android 數據存儲

Android提供了多種可選的方式讓你永久地保存應用程序的數據。方案的選擇取決於你的特殊需要,如數據是否需要對你的應用程序是私有的或者可以被其他應用程序(或用戶)訪問,還有你需要多大的存儲空間。

數據存儲方案由以下幾種:

Shared Preferences

以鍵-值對的形式保存私有的原始類型的數據

Internal Storage

將私有數據保存在設備的存儲區中

External Storage

將共享數據保存在共享外部存儲區中

SQLite Databases

將結構化的數據保存在私有的數據庫中

Network Connection

將數據保存在你的web服務器中

Android也提供了一種可以對其他應用程序暴露私有數據的方式——通過 content provider. content provider 是一個可選的用於供其他應用程序讀寫你的應用程序數據的組件,取決於你要暴露哪些數據。想要獲得更多的關於 content provider的信息,請參考文檔 Content Providers 。

Shared Preferences

通過以下兩種方式的任何一種可以獲得你的應用程序的 Shared Preferences 對象。

· getSharedPreferences() - 如果你需要多個用名字標識的 preferences 你可以用這個方法,通過第一個參數來指定需要的 preferences 。

· getPreferences() -如果你的 Activity 只需要一個 preferences 文件,你就可以使用這個方法。因為該方法得到的 preferences 文件將會是 Activity 中唯一的 preferences,你不需要提供一個名字。

寫入值:

1. 調用 edit() t獲得一個 SharedPreferences.Editor對象。

2. 通過 putBoolean() 和 putString()等方法寫入值。

3. 通過 commit()方法提交修改後的數據。

通過 SharedPreferences 的 getBoolean() 和 getString()等方法讀取其中的值。

下面是一個使用 : SharedPreferences 的例子:

public class Calc extends Activity {
public static final String PREFS_NAME = "MyPrefsFile";

@Override
protected void onCreate(Bundle state){
super.onCreate(state);
. . .

// Restore preferences
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
boolean silent = settings.getBoolean("silentMode", false);
setSilent(silent);
}

@Override
protected void onStop(){
super.onStop();

// We need an Editor object to make preference changes.
// All objects are from android.context.Context
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("silentMode", mSilentMode);

// Commit the edits!
editor.commit();
}
}

Internal Storage

你可以直接把文件保存到設備的內部存儲中。默認地,保存到內部存儲中的文件對你的應用是私有的,其他應用程序(或用戶)不能夠訪問它們。當用戶卸載掉你的程序後,這些文件就被刪除了。

創建並寫入私有文件到內部存儲中:

1. 調用 openFileOutput() 方法並傳入文件的名稱和操作方式。該方法返回一個 FileOutputStream 對象。

2. 通過 write()方法寫文件。

3. 通過 close()方法關閉流。

例如:

String FILENAME = "hello_file";
String string = "hello world!";

FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
fos.write(string.getBytes());
fos.close();

MODE_PRIVATE 模式將會創建一個文件(或替換掉已有的同名文件)並使它對你的應該程序私有。其他可用的模式有: MODE_APPEND, MODE_WORLD_READABLE, and MODE_WORLD_WRITEABLE.

從內部存儲空間讀取文件:

1. 調用 openFileInput() 方法並傳入要讀取的文件的名字。該方法返回一個 FileInputStream 。

2. 從文件讀取字節 read().

3. 關閉流 close().

提示:如果你想要在編譯時在你的應用程序中保存一個靜態文件,你可以將該文件存放在 res/raw/目錄下。你可以通過 openRawResource()來打開該文件通過傳入 R.raw. 資源ID.該方法返回一個 InputStream ,你可以通過該輸入流來讀取你的文件(但是不能寫入到原始文件)。

保存緩存文件

如果你想緩存一些數據而不是永久地保存它們,你應該用 getCacheDir()方法來打開一個代表你的應用程序存放臨時緩存文件的內部目錄的File對象。

當你的設備內部存儲空間不足時,Android 可能會刪除這些緩存文件以恢復空間。然而,你不應該依賴於系統去為你清除這些文件。你應該始終自己去維護這些緩存文件並且使它們保持在一個合理的空間消耗大小范圍內,例如 1MB.當用戶卸載你的應用時,這些文件也將被刪除。

其他常用方法:

getFilesDir()

獲取你的內部文件在文件系統上保存的絕對路徑。

getDir()

創建(如果存在則打開)你的內部存儲空間的目錄。

deleteFile()

刪除內部存儲中保存的一個文件。

fileList()

以文件數組的形式返回你的應用保存的文件。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved