2015-07-28 39 views
0

開發人員。Android - 下載並存儲JSON,以便APP可以離線工作

我是一名初級Android開發人員,他最近剛剛離校。我需要開發一個應用程序,它顯示一個ListView,其中一些內容從Internet下載。問題是,JSON有點「大」,因此,用戶可以通過WiFi下載JSON並且萬一網絡連接不好,他們可以使用數據的「本地拷貝」而不必再用慢速互聯網下載它。

有沒有什麼辦法可以下載JSON編碼的信息與AsyncTask或任何東西,並將其存儲在本地,所以我可以稍後打開它並再次加載ListView內容?

謝謝:)

+0

方法很多..一個數據庫中存儲數據,使用FileInputOutputStream,sharedpreferences和等 – Sheychan

回答

1

首要的事情:Read this知道你有什麼樣的選擇。

現在回答你關於如何從here保存在本地的一些代碼數據的問題:

String FILENAME = "hello_file"; 
String yourJSON = downloadedJSON.toString() // depends what kind of lib you are using 

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

存儲的文件名中SharedPreferences,這樣就可以在它的變化情況下,後來讀它,或只是學習如何將數據存儲在SharedPreferences

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); // PREFS_NAME should be a static final String property 
SharedPreferences.Editor editor = settings.edit(); 
editor.putString("myFileName", FILENAME).commit(); 

然後,當你以後重新打開該應用程序,你可以做這樣的:

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
String FILENAME = setting.getString("myFileName", ""); 
if (!FILENAME.isEmpty()) { 
    readFile(FILENAME); 
} 

最後,來自here:

FileInputStream fis; 
fis = openFileInput("test.txt"); 
StringBuffer fileContent = new StringBuffer(""); 

byte[] buffer = new byte[1024]; 

while ((n = fis.read(buffer)) != -1) { 
    fileContent.append(new String(buffer, 0, n)); 
} 

嘗試讀取該文件早在String您使用此代碼之前,瞭解每個代碼塊。如果您遇到困難,請瀏覽Android文檔並使用Google。 Plenty of tutorials out there。數據存儲是基礎,而不僅僅是Android!

+0

將數據寫入文件非常感謝ezCoding。當我從工作中出來時,我會在今天檢查所有內容:) – uryftw

+0

不客氣:) – ezcoding

+0

Arf,我仍然無法對此進行測試,但我會盡快接受答案,只要我可以測試並看到如果它有效(我希望它會)。對不起,延遲的答案! – uryftw

相關問題