我只是注意到Gson的表现并不是我的预期,而且一些解析过程需要花费很多时间。我不是在寻找另一个解决方案,我的应用程序非常庞大,而且我不想改变其结构,例如杰克逊。
我的Android应用允许用户使用后退键停止http请求。我的代码中止请求并基本上停止了任务。问题是,它需要等待方法gson.fromJson(result)
中止任务。该指令可以持续几秒钟。
有没有办法告诉gson对象中止解析过程?
答案 0 :(得分:2)
我不熟悉GSON,但您可以关闭JSON数据的基础流(Inpustream)以结束解析过程,但您可以捕获异常。这应该适用于输入数据可以是Stream的情况。我刚刚看了一下GSON API,而fromJson方法接受了一个可以关闭的Reader参数。 一种不好的方法也可能是在线程中运行它并调用thread.stop()。
答案 1 :(得分:0)
也许您可以尝试将单个gson调用拆分为多个子调用(因为当请求执行几秒钟时,解析的数据似乎很大)。
基本上我的意思是解析它自己的每个数组元素或逐个解析类的属性,而不是在一次调用中完成整个工作。因此,您可以更轻松地中断该过程。
答案 2 :(得分:0)
AFAIK`Gson.fromJson()'是一个阻塞方法调用,在Java中无法停止。
在后台线程中运行解析。在这种情况下,你可以让它运行,因为它不会影响你的应用程序的UI部分。
使用AsynTask。添加一个字段cancelled
以通知任务它已被取消,以便它不会在最后更新UI。
答案 3 :(得分:0)
你可以通过缓冲响应来做到这一点,并且只在一切都完成时进行解析;或者,停止处理被取消。