AsyncTask doInBackground奇怪的行为

时间:2013-06-06 19:17:38

标签: android android-asynctask backgroundworker

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

在将USB线分离并重新连接到Android设备之间执行网络呼叫时,有没有人经历过奇怪的行为?当我记录每个序列时,应用程序的流程显示正常达到要点&通过AsyncTask执行的点。 当USB始终接线时,应用程序可以通过网络呼叫正常运行。 LogCat可能与此有关吗?

感谢。

修改 网络请求实际上没有失败,服务器只响应错误代码。但在我开始责备服务器之前,我通过浏览器成功地执行了多次点击到同一个URL。我只将USB插入到图片中,因为奇怪的行为只发生在USB与设备分离并重新连接时。

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

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

1 个答案:

答案 0 :(得分:0)

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

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