-1

我已经弄清楚为什么它有时会崩溃,它无法获取 url,而 askctask 只是继续在后台工作我如何设置打开 url 的时间间隔 rock.open 流是它真正减慢的地方我希望他用户稍后再试一次在一定时间后停止 asynctask 或让 asynctask 重新启动,因为如果我关闭 wifi,当然应用程序崩溃了?

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();

         }
4

2 回答 2

2

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

发生错误的原因是,线程尚未完成其任务并且活动还活着。并且假设由 bg 线程初始化的对象还没有完成。

您需要在 Asynctast 的 postExecution 之后识别该对象并执行操作。

在调试中它工作得很好,因为你已经在活动中放置了断点,而不是在线程中。因此线程将完成其任务并初始化对象。

希望这有帮助!!

于 2012-05-30T04:48:13.410 回答
0

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

于 2012-05-30T04:52:15.060 回答