2014-04-28 85 views
-4

我正在開發一個應用程序,它將在幾個階段發送電子郵件,但我必須檢查互聯網連接。如果用戶有互聯網連接,那麼我只是發送電子郵件,但如果用戶沒有互聯網,那麼當用戶重新獲得互聯網連接時,我必須保存電子郵件請求併發送電子郵件。在Android中保存ArrayList <Object>

我構建了一個ArrayList,並在用戶沒有連接時向該列表添加電子郵件請求。我怎樣才能永久保存ArrayList的應用程序?我必須永久存儲該列表,因爲即使在用戶關閉並重新打開該應用程序後,我仍然需要該列表。

+1

你可以找到的官方指南[這裏](http://developer.android.com/guide/topics/data/data-storage.html)。 –

回答

-1

我猜數據庫將是一個矯枉過正,你可以簡單地寫郵件地址的文件或將其保存在SharedPreferences你可以看到不同的存儲位置:http://developer.android.com/guide/topics/data/data-storage.html

+0

給定鏈接中有代碼示例。 –

+0

它只是增加INT,字符串,布爾等,但沒有任何對象列表 – user2166895

+0

可以遍歷一個列表,並獲得字符串,布爾變量等 –

0

首先列表轉換成JSON字符串,你可以使用gson,jackson或其他json轉換器。通過調用JSONCache.init並通過上下文

public class JSONCache { 
    private static Context context = null; 

    public static void init(Context context) { 
     if (JSONCache.context == null) { 
      JSONCache.context = context; 
     } 
    } 
    public static String loadData(String prefName, String key) { 
     SharedPreferences prefs = context.getApplicationContext().getSharedPreferences(prefName, Context.MODE_PRIVATE); 
     return prefs.getString(key, null); 
    } 
    public static void saveData(String prefName, String key, String json) { 
     SharedPreferences prefs = context.getApplicationContext().getSharedPreferences(prefName, Context.MODE_PRIVATE); 
     SharedPreferences.Editor ed = prefs.edit(); 
     ed.putString(key, json); 
     ed.commit(); 
    } 
    public static void deleteAllData(String prefName) { 
     SharedPreferences prefs = context.getApplicationContext().getSharedPreferences(prefName, Context.MODE_PRIVATE); 
     SharedPreferences.Editor ed = prefs.edit(); 
     ed.clear(); 
     ed.commit(); 
    } 
    public static void deleteDataByKey(String prefName, String key) { 
     SharedPreferences prefs = context.getApplicationContext().getSharedPreferences(prefName, Context.MODE_PRIVATE); 
     SharedPreferences.Editor ed = prefs.edit(); 
     ed.remove(key); 
     ed.commit(); 
    } 
    public static boolean dataExists(String prefName, String key) { 
     SharedPreferences prefs = context.getApplicationContext().getSharedPreferences(prefName, Context.MODE_PRIVATE); 
     return prefs.getAll().containsKey(key); 
    } 
} 

初始化緩存(這通常是你在活動)

現在,只要您需要:

下面的類添加到項目保存只要致電:

JSONCache.saveData("myPreference", keyForSave, jsonStringToSave); 

從緩存中提取

String json=JSONCache.loadData(myPreference, jsonStringToSave) 

然後你可以使用之前相同的json轉換器將你的json字符串轉換回列表。

相關問題