【问题标题】:AsyncTask doInBackground odd behaviorAsyncTask doInBackground 奇怪的行为
【发布时间】:2013-06-06 19:17:37
【问题描述】:

原创 我有一个执行网络请求的 AsyncTask,它工作正常。我正在测试的环境是针对 Eclipse 的,USB 连接到设备以将信息记录到 LogCat。当从设备上拆下 USB 线并将线重新连接回设备时,我可以看到 LogCat 会话恢复,之后,我退出应用程序并重新进入应用程序,当 AsyncTask 再次运行时,网络请求失败.

有没有人在断开和重新连接 USB 线到 android 设备之间执行网络调用时遇到过奇怪的行为? 应用程序的流程看起来很正常,因为我已经记录了每个序列直到 AsyncTask 执行为止。 当 USB 始终连接时,该应用程序可以通过网络调用正常工作。 LogCat 可能与此有关吗?

谢谢。

编辑 网络请求实际上并没有失败,服务器只是用错误代码响应。但在我开始责怪服务器之前,我通过浏览器成功地对同一个 URL 进行了多次点击。我只在图片中涉及了 USB,因为奇怪的行为仅在 USB 从设备上分离并重新连接时才会发生。

更新 经过进一步研究,我终于诊断出这个问题,但不知道为什么会这样。当调试器连接到负责处理网络调用(后台线程)的进程时,应用程序按预期工作。但是,当调试器与进程断开连接时,网络调用会带回服务器错误结果。

调试器如何影响网络调用?

【问题讨论】:

  • 您是说退出应用程序并重新进入。这听起来更有可能是导致事情失败的罪魁祸首。你调试过这个吗?
  • 你怎么知道请求失败了?
  • 我已经编辑了帖子,请看编辑。

标签: android android-asynctask backgroundworker


【解决方案1】:

好吧,我找到了答案,我会发布它以防万一有人遇到这个问题。

本质上,USB线并没有真正发挥作用,它只是服务器吐回坏数据,失败后简单重试即可解决。需要时间来理解的原因是,当使用 USB 连接设备时,行为是正常的,一切都很好。这给人一种错觉,即服务器不是问题,因为它始终如一地工作。但是,我知道在“调试”模式下,执行速度较慢,这可能使服务器有一些时间在后续请求上休息,从而产生服务器是反应性的错觉。但是,当从设备上拆下 USB 线,从而退出调试模式并逃离速度较慢的环境时,服务器确实经过了测试并失败了。所以无论谁遇到这个问题,都不要认为是调试器导致了这个问题,很可能是服务器。

【讨论】:

    猜你喜欢
    • 2014-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2011-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多