2011-05-21 53 views
2

我有一个小的Android应用程序,基本上执行http调用来检索一些网页信息,并解析它在本地显示的目的。Android应用程序崩溃3G连接速度慢,但工作正常无线

它在wifi上正常工作。但是,在提交http查询后,应用程序在3G上随机崩溃(并非全部,但频率足够)。通常我只能重新启动应用程序,尝试执行相同的任务,它将按照它的意图工作。我有点卡住试图调试这个问题。是否因互联网连接速度慢导致?数据包丢失?我可以在那里设置什么样的检查代码来防止这种情况发生?

一些示例代码:

HttpClient client = new DefaultHttpClient(); 
    HashMap<String, String[]> hmSearchResults = null;  
    HttpGet getMethod = new HttpGet(url); 

    try { 

     ResponseHandler<String> responseHandler = new BasicResponseHandler(); 

     String resultPage = client.execute(getMethod, responseHandler); 

     // I am think the error is here if resultPage == null due to 
     // whatever reason, is there any check I can put around 
     // client.execute? 
     hmSearchResults = ParseHtml.getSearchResultText(resultPage, numRequestResults); 

    } catch (Throwable t) {  
     Utility.showToast(this,"Request failed: " + t.toString()); 
    } 
+3

logcat中的错误消息是什么? – Haphazard 2011-05-21 21:57:04

+0

是的,什么是错误和你在运行这个线程? – Fredrik 2011-05-22 01:19:29

+0

这些任务在AsyncTask的doInBackground()中执行。在手机本身,它只是创建应用程序强制关闭错误。我会尝试在调试模式下重新创建错误,并在此处发布logcat错误。 – adjfac 2011-05-22 15:55:09

回答

0

你从活动或服务运行呢?在我自己的应用程序中,如果我从服务运行代码,则只会遇到此问题;它可以在wifi上正常工作,但在3G上崩溃,并且从不在活动中崩溃。

为了这个,我能找到固定的服务崩溃唯一的解决方法如下:

  • 如果在无线网络连接,并使用服务,如果在3G使用的AsyncTask
  • ,并使用服务,在主线程上运行
  • 别人使用的AsyncTask

希望这有助于。