我試圖解析與Android一個JSON流把所有的元素標記在ActivityMap。安卓:如何解析BIG JSON流
問題是數據量:json返回mysql數據庫的3300行,每行有3個對象。因此,當我嘗試使用異步任務獲取所有數據時,系統在一段時間後返回應用程序不響應。
有什麼建議嗎?
我試圖解析與Android一個JSON流把所有的元素標記在ActivityMap。安卓:如何解析BIG JSON流
問題是數據量:json返回mysql數據庫的3300行,每行有3個對象。因此,當我嘗試使用異步任務獲取所有數據時,系統在一段時間後返回應用程序不響應。
有什麼建議嗎?
也許你可以使用Service
。您可以在here
服務,可以找到的教程主要是利用大數據傳輸,還例如定期方法連接每2小時服務器。在後臺和用戶上工作的服務看不到,因爲服務不包括僅在後臺工作的佈局。你可以設置你的服務自我毀滅當你的工作完成。只需觸發你的Service
,連接你的流和處理你的大回應。當完成自我毀壞你的服務。
我認爲你應該做的服務解析沒有在應用程序中的活動。
此外,你可以分開呼叫一個較小的調用,例如獲得一個單獨的AsyncTask每1000行,但它不是一個更好的解決方案在性能明智,我認爲更好的方法是使用服務或裝載機,而不是傳統AsyncTask方式,它與它自身的活動有很大的關係。
另外,請檢查您的服務器端超時配置,也可能是由於從服務器端超時。
我試過的東西,這些天,但問題也仍然存在與服務。當它嘗試從它從服務器獲得的字符串中創建JSON對象時,應用程序會轉到ANR。正如@Marzouk所說,也許我必須做多個調用服務器才能獲取json數據 – garsim
您可以使用分頁方法。例如,從json返回20個對象和下一個頁面url,這是一個交易。你也可以使用Gson檢查下面的評論。只需在這裏創建POJO類:http://www.jsonschema2pojo.org/ 但最好的方法是在服務器中使用分頁方法。只需返回nextpageurl字段。如果等於na或null,則停止您的請求,但等於任何字符串創建新請求並繼續。 –