我有一些信息需要存儲在內部存儲器中。我希望以其在SharedPreferences中完成的方式以鍵值對的形式進行存儲。我正在考慮創建JsonObject並以這種方式進行保存和檢索。有沒有其他方法可以將數據以鍵值對的形式保存在內部存儲器中?如何將鍵值對存儲在將存儲在Android內部存儲器中的文件中?
問候 蘇尼爾
我有一些信息需要存儲在內部存儲器中。我希望以其在SharedPreferences中完成的方式以鍵值對的形式進行存儲。我正在考慮創建JsonObject並以這種方式進行保存和檢索。有沒有其他方法可以將數據以鍵值對的形式保存在內部存儲器中?如何將鍵值對存儲在將存儲在Android內部存儲器中的文件中?
問候 蘇尼爾
釷存儲對象數據的標準Java方法是使用序列化 - 也就是它是有什麼。在大多數情況下,實現Serializable是相當直接的。 This Site提供了一個關於序列化基礎知識的好教程,可以很容易地爲Android環境量身定製。
通過創建HashMap,您可以將HashMap序列化爲文件,以便以鍵/值形式輕鬆檢索您的數據。幾乎所有的庫集合都支持Serializable,所以你也可以存儲其他類型的Map/List。
那麼使用哪個 - 序列化或JSONObject?這真的取決於效率是多麼重要,以及你想存儲的東西有多複雜。
通常,無論哪種情況,最大的成本都是將數據寫入文件的實際行爲,因此,由於JSONObjects幾乎總是更小更簡單,因此它們可能會更快一些。這對存儲字符串或非常簡單的對象來說很好,它可以輕鬆地轉換爲JSON。如果您有一個非常複雜的類,有很多成員和很多可能的狀態,使用序列化可能會更簡單和高效。在大多數情況下,這些選項之間的實際成本差異可以忽略不計,並且只有在許多次執行讀寫操作時纔會真正起作用。
所以使用JSON的基本類型和序列化的複雜類型(你甚至可以存儲序列化對象的JSON對象!)
一個非常基本的SQLiteDatabase將做的工作。這裏有很多教程,你需要的只是一個包含3列的表:_id,key,value。
我個人發現This Tutorial是一個很好的起點。
DB的總是需要上下文來讓球滾動,所以對於這樣一個簡單的get/set的情況下,用下面的方法簽名創建一個較小的類將讓生活真正的輕鬆:
public static void set(Context context, String key, String value);
public static String get(Context context, String key);
更多複雜的對象,請使用Parcelable或序列號:
public static void set(Context context, String key, Serializable value);
public static Serializable(Context context, String key);
嘗試使用哈希映射.. –
我能到HashMap中存儲的文件然後再檢索它? – sunil
是的,你可以做到這一點。 –