2012-07-26 28 views
0

爲了獲得我的應用程序的數據,我解析了一個Json文件和Jackson,以定製對象(的列表)。當我啓動我的應用時,我檢查是否有新的Json文件可用並詢問用戶是否要下載它,否則我使用「舊」Json文件。但是每次我開始我的應用程序時,我都會解析Json。然後,當我想要的時候,我使用應用程序類來保存我的對象列表並保存到我的數據中,大部分時間我只需要一個對象。Parsed Json(傑克遜)對象數據保存

從巨大的列表中,使用多層嵌套對象,我創建了一個自定義對象的簡單「扁平」數組列表,其中僅放置了需要創建列表視圖(名稱,ID,第二個文本和圖片的URL) 。點擊某物時,我使用該ID來獲取所有數據。

每次解析這個整個Json文件都非常費時,並且使得我的應用程序的啓動時間很長。當然,這很糟糕。 擁有這個在應用程序類中保存的自定義對象的龐大列表會填充我設備的大量內存,有時候在某些使用之後該類會被殺死,並且我需要重新進行重新分析。

有沒有一種方法我不需要重新計算我所有的數據? 我希望是這樣一個過程:

  • 新的JSON文件
  • 首次解析總JSON列出多層定製的對象
  • 的列表視圖創建簡單的列表
  • 刪除/清除大名單
  • 一些聰明的方式來獲得只有一個巨型項目,沒有保留整個列表在我的記憶。 (也許與傑克遜有關)。
  • 關於破壞的應用程序也許保存簡單的列表,我讀了一些關於parceable或serializable?

任何人都知道如何做到這一點? 或者有其他可怕的想法?

回答

0

我可能會將數據存儲在SQLite數據庫中,與Android平臺的設計方式一致。

1

Jackson有一個流式API。你也可以在AsyncTask中解析json(在後臺),並在新數據準備好後更新你的用戶界面

+0

是啊這是我如何加載我的數據在啓動過程中 – Jasper 2012-07-27 07:21:15

+1

AsyncTask可以繼續在後臺處理數據時可以向用戶提供一個接口嗎?至少這樣,你不會把它們吹散。我同意SQLite對你來說可能是一個更快的解決方案。我明白這意味着重新設計一些你的東西,但它可能是值得的 – portforwardpodcast 2012-07-27 20:22:52

0

作爲Jackson API的替代方案(雖然速度非常快,但仍然需要掃描大部分內容),也許你可以保存在不同的文件中,每個條目一個?或者,如果有辦法將事物分組,每個文件都有一些子集?

當然,如果你真的有大量的條目,使用SQLite作爲布魯斯建議很有意義。