如何在活动中重新启动asynctask以下载有问题的URL?

时间:2012-05-30 04:06:13

标签: android android-activity

我已经弄清楚为什么它崩溃有时它无法获取网址和askctask只是保持工作背景我如何设置打开网址摇滚的间隔。开放流是它真的慢下来我希望他用户尝试再过一次,并在一定时间后停止asynctask或使asynctask重新启动,因为好吧如果我转向offf的应用程序崩溃?

on create.....(
 ws=new WeatherSet();
new DownloadImageTask().execute(queryString);
if set a debug point here works magically :) 
  private class DownloadImageTask extends AsyncTask<String, Void, String> {
         protected String doInBackground(String... urls) {
               try {
                URL rock=new URL(urls[0]);

                /* Get a SAXParser from the SAXPArserFactory. */
                SAXParserFactory spf =   
                                    SAXParserFactory.newInstance();
                SAXParser sp = spf.newSAXParser();

                /* Get the XMLReader of the SAXParser we created. 
                XMLReader xr = sp.getXMLReader();

                /*
                 * Create a new ContentHandler and apply it to the
                 * XML-Reader
                 */
                WeatherHandler gwh = new   
                                    WeatherHandler();
                xr.setContentHandler(gwh);

                /* Parse the xml-data our URL-call returned. */

                xr.parse(new InputSource(rock.openStream()));


            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

             return "";
         }

         protected void onPostExecute(String result) {

            weather();

         }

2 个答案:

答案 0 :(得分:2)

当您的活动需要初始化某些对象并且该事情发生在backgroung线程中时,会发生这种情况,

发生错误是因为,Thread尚未完成其任务,活动仍然存在。并且假设通过bg线程初始化的对象尚未完成。

在执行Asynctast后,您需要识别这些对象并执行操作。

在调试中,它工作正常,因为,你已经在活动中放置了断点,而不是在线程中。所以Thread将完成它的任务和对象初始化。

希望这有帮助!!

答案 1 :(得分:0)

看起来当你在e设备上运行时,缺少一些资源,这可能是活动本身无法启动的原因。如果它在稍后阶段停止,可能会出现一些线程问题。因此,尝试逐行调试整个活动。或者可以在每一行之后放置日志,然后就会出现问题所在。