2014-04-15 19 views
0

我的問題是讀取內部文件的性能。這真的很慢。我沒有測量時間,但恕我直言,它真的很慢。 2-3秒讀取文件是這樣的:將5個json文件內容保存到緩存:選擇SharedPrefs而不是內部文件

private static String readJsonFile(String type, Context context) { 
    int ch; 
    StringBuffer sb = new StringBuffer(""); 
    FileInputStream fis = null; 
    try { 
     fis = context.openFileInput(context.getResources().getString(R.string.class.getField("filename_" + type).getInt(null))); 
     while ((ch = fis.read()) != -1) { 
      sb.append((char)ch); 
     } 
    } catch (NotFoundException | IllegalAccessException | IllegalArgumentException | NoSuchFieldException | IOException e) { 
     e.printStackTrace(); 
    } 
    String jsonString = new String(sb); 
    return jsonString; 
} 

得到的數據寫入應用程序,它使用的AsyncTask下載5個不同的JSON的輸入字符串的啓動畫面。

我想知道爲了訪問所有活動中的數據,是否會更快地將數據保存在共享首選項中。所以我不需要進行文件訪問操作。但是SharedPrefs也不是一個文件訪問操作,讀取一個xml文件?

或者我應該調用所有的函數,需要通過引用函數參數訪問全局可用的json數據嗎?做這個工作嗎?

長話短說: 我需要一個模式/模式來說明如何在應用程序的生命週期中存儲5個不同的JSON數據字符串,以便每個活動都可以訪問它們,而無需執行文件操作,還是數據庫請求?

是否有一些應用程序緩存來做到這一點?

編輯:我腦海中的另一個想法是使用HttpResponseCache並啓動下載數據(在這種情況下從緩存)的asyncActivity。但仍然不是這也是一個文件閱讀操作?

感謝

+0

我發現了一些可能解決我的問題的東西:http://stackoverflow.com/questions/2676280/good-way-to-cache-data-during-android-application-lifecycle 但還有其他建議嗎? – Klaus

回答

0

我結束了使用擴展的應用程序類,抱着我的全局變量。這很快,我不必一直讀取文件。此外,我不必在片段構造函數中使用盡可能多的參數。