@Override
protected InputStream doInBackground(String... url){
try {
InputStream stream = downloadXml(url[0]);
new ParseXml(stream); //for testing porpuses: outputs ok to logcat
return stream;
} catch (IOException e) {
Log.d("dbg","exception");
e.printStackTrace();
return null;
}
}
@Override
protected void onPostExecute(InputStream result) {
if (result != null) {
new ParseXml(result); //crashes the app
}
Log.d("dbg","postexecute triggered ok");
}
代码是非常自我解释我认为,我尝试将传递类型更改为只是对象并在需要的地方输入类型,但它也没有用。
在我应该知道的sdk中有没有未记载的内容吗?
答案 0 :(得分:1)
onPostExecute()
仅在MainUI Thread中运行。所以请始终将其保留在doInBackground()
中。
此代码行new ParseXml(result);
应位于 AsyncTask 的doInBackground()
中。
更新:
完成doInBackground()
中的XML解析,只传递onPostExecute()
中的结果,只要您想反映应用程序UI上的更新。