2016-02-26 61 views
2

我试图解析与Android一个JSON流把所有的元素标记在ActivityMap安卓:如何解析BIG JSON流

问题是数据量:json返回mysql数据库的3300行,每行有3个对象。因此,当我尝试使用异步任务获取所有数据时,系统在一段时间后返回应用程序不响应。

有什么建议吗?

回答

0

也许你可以使用Service。您可以在here

服务,可以找到的教程主要是利用大数据传输,还例如定期方法连接每2小时服务器。在后台和用户上工作的服务看不到,因为服务不包括仅在后台工作的布局。你可以设置你的服务自我毁灭当你的工作完成。只需触发你的Service,连接你的流和处理你的大回应。当完成自我毁坏你的服务。

+0

我试过的东西,这些天,但问题也仍然存在与服务。当它尝试从它从服务器获得的字符串中创建JSON对象时,应用程序会转到ANR。正如@Marzouk所说,也许我必须做多个调用服务器才能获取json数据 – garsim

+0

您可以使用分页方法。例如,从json返回20个对象和下一个页面url,这是一个交易。你也可以使用Gson检查下面的评论。只需在这里创建POJO类:http://www.jsonschema2pojo.org/ 但最好的方法是在服务器中使用分页方法。只需返回nextpageurl字段。如果等于na或null,则停止您的请求,但等于任何字符串创建新请求并继续。 –

0

我认为你应该做的服务解析没有在应用程序中的活动。

此外,你可以分开呼叫一个较小的调用,例如获得一个单独的AsyncTask每1000行,但它不是一个更好的解决方案在性能明智,我认为更好的方法是使用服务或装载机,而不是传统AsyncTask方式,它与它自身的活动有很大的关系。

装载机:loaders-and-loadermanager

服务:android_services

另外,请检查您的服务器端超时配置,也可能是由于从服务器端超时。

+1

我认为我必须做一个以上的电话,所以我可以用更小的JSON对象。后来我试试:) – garsim

+0

另外,请检查您的服务器端超时配置,也可能是由于从服务器端超时。 – Marzouk

-1

如果你有JSON数据,以及相应的模型类,并且要映射JSON数据模型类,我会建议使用GSON()库。它会将你的json数据解析到你的java类中。为了包含Gson()库,请在Gradle依赖项中包含以下行。

compile 'com.google.code.gson:gson:2.3' 

检查下面的链接,这会让你更愿意使用这个库。

Link1Link2