編輯:關於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()
以文件數組的形式返回你的應用保存的文件。
隨著Android的不斷壯大,你想要的很多控件在github上基本都能找到,對於愛折騰的我來說,閒暇之余更喜歡自己倒騰,之前博客有提到想研究圖片這一塊,今天就來折騰一下編
在使用Bitmap(位圖)中,我們總是會與BitmapFactory類打交道。今天就來看看BitmapFactory的廬山真面目。首先依舊是看看官網的定義:Creates
南周知道 要嚴肅,有知識;要八卦,有內幕。每天一篇,盡享你想知道的和不知道的,我們只想,讓知道成為一種享受。請記住知道,南方周末每日網絡專稿。 1.每天推送一篇你想知道的
cardView:添加依賴:在Studio搜索cardview即可 在V7包中或者直接在gradle中添加compile 'com.android.support