我已经弄清楚为什么它崩溃有时它无法获取网址和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();
}
答案 0 :(得分:2)
当您的活动需要初始化某些对象并且该事情发生在backgroung线程中时,会发生这种情况,
发生错误是因为,Thread尚未完成其任务,活动仍然存在。并且假设通过bg线程初始化的对象尚未完成。
在执行Asynctast后,您需要识别这些对象并执行操作。
在调试中,它工作正常,因为,你已经在活动中放置了断点,而不是在线程中。所以Thread将完成它的任务和对象初始化。
希望这有帮助!!
答案 1 :(得分:0)
看起来当你在e设备上运行时,缺少一些资源,这可能是活动本身无法启动的原因。如果它在稍后阶段停止,可能会出现一些线程问题。因此,尝试逐行调试整个活动。或者可以在每一行之后放置日志,然后就会出现问题所在。