編輯:關於Android編程
本課程涵蓋了雲計算功能的應用不同的策略。它涵蓋了同步數據和使用雲自己的後端的Web應用程序,並使用雲,這樣一個新的設備上安裝應用程序時,用戶可以恢復他們的數據備份數據。
存儲選項
Android提供了幾個選項,為您節省持久應用程序數據。您選擇的解決方案取決於您的特定需求,如數據是否應該是私有的應用程序或訪問其他應用程序(和用戶),並多少空間您的數據需要。
您的數據存儲選項如下:
Shared Preferences
存儲在鍵值對私人的基本數據。
Internal Storage
存儲在設備內存的私人數據。
External Storage
存儲在共享外部存儲公共數據。
SQLite Databases
在專用數據庫存儲結構化數據。
Network Connection
用自己的網絡服務器在網絡上存儲數據。
Android提供了一個方法可以讓你即使您的私人數據暴露給其他應用程序 - 與內容提供商。內容提供商是一個可選組件,公開讀給你的應用程序數據/寫訪問,受要強加任何限制。有關使用內容提供商的更多信息,請參閱內容提供商的文檔。
使用Shared Preferences
該SharedPreferences類提供了一個總體框架,使您可以保存和檢索的原始數據類型的持久鍵 - 值對。您可以使用SharedPreferences保存任何基本數據:布爾型,浮點數,整型,長整型和字符串。該數據將在用戶會話持久(即使你的應用程序被殺害)。
用戶首選項
共享偏好不嚴格用於保存“用戶首選項”,比如什麼鈴聲用戶選擇。如果您有興趣為應用程序創建用戶喜好,看PreferenceActivity,它提供了一個框架的活動,為您創建用戶喜好,這將是自動持久(使用共享喜好)。
要獲得SharedPreferences對象為你的應用程序,使用以下兩種方法之一:
getSharedPreferences() - 如果你需要通過名稱標識多個首選項文件,你的第一個參數指定使用此。
的getPreferences() - 如果你只需要一個為你的活動喜好文件中使用此。因為這將是唯一的喜好提交您的活動,你不提供一個名稱。
寫值:
調用編輯()得到一個SharedPreferences.Editor。
與方法,如putBoolean()和putString添加值()。
提交與提交新的值()
要讀取值,使用SharedPreferences等方法getBoolean()和GetString()。
這裡是保存在一個計算器按鍵靜音模式下的偏好的例子:
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(); } }使用內部存儲
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和MODE_WORLD_WRITEABLE。
如果您需要同時讀取和寫入文件,則需要請求只有WRITE_EXTERNAL_STORAGE權限,因為它隱含需要讀取訪問以及。...
/* Checks if external storage is available for read and write */ public boolean isExternalStorageWritable() { String state = Environment.getExternalStorageState(); if (Environment.MEDIA_MOUNTED.equals(state)) { return true; } return false; } /* Checks if external storage is available to at least read */ public boolean isExternalStorageReadable() { String state = Environment.getExternalStorageState(); if (Environment.MEDIA_MOUNTED.equals(state) || Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) { return true; } return false; }該getExternalStorageState()方法返回,你可能要檢查其他國家,如媒體是否被共享(連接到計算機),完全丟失,已刪除嚴重,等等。你可以使用這些與通知用戶當你的應用程序需要訪問媒體的更多信息。
public File getAlbumStorageDir(String albumName) { // Get the directory for the user's public pictures directory. File file = new File(Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_PICTURES), albumName); if (!file.mkdirs()) { Log.e(LOG_TAG, "Directory not created"); } return file; }節約是應用程序專用文件。
注意:當用戶卸載應用程序,這個目錄及其所有內容將被刪除。此外,系統的介質掃描儀沒有在這些目錄讀取文件,所以它們不從MediaStore內容提供商訪問。因此,你不應該使用這些目錄的媒體,最終屬於用戶,如捕獲或與您的應用程序,或音樂的用戶與您購買的編輯照片的應用程序,這些文件應該被保存在公共目錄。...
public class DictionaryOpenHelper extends SQLiteOpenHelper { private static final int DATABASE_VERSION = 2; private static final String DICTIONARY_TABLE_NAME = "dictionary"; private static final String DICTIONARY_TABLE_CREATE = "CREATE TABLE " + DICTIONARY_TABLE_NAME + " (" + KEY_WORD + " TEXT, " + KEY_DEFINITION + " TEXT);"; DictionaryOpenHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(DICTIONARY_TABLE_CREATE); } }然後,您可以使用您所定義的構造讓您SQLiteOpenHelper實現的實例。要寫入,並從數據庫中讀取,調用getWritableDatabase()和getReadableDatabase(),分別為。這些均返回表示數據庫,並提供了SQLite的操作方法SQLiteDatabase對象。
本人工作有一個月多了。對於android很多東西,都有了新的了解或者說真正的掌握。為了讓更多的像我這樣的小白少走彎路,所以我會堅持將我在工作中遇到的一些比較令我印象深刻的
1.ContentProvider是什麼? ContentProvider(內容提供者)是Android的四大組件之一,管理android以結構化方式存放的數據,以相對
本文參考Android應用程序組件Content Provider的啟動過程源代碼分析http://blog.csdn.net/luoshengyang/article/
博主這段時間工作實在是太忙了,全天無尿點……博客一直沒更新,實在對不住大家……這篇就給大家講setShader的另