Android - InputStream总是在前台死掉

时间:2014-06-14 18:59:03

标签: android android-asynctask inputstream saxparser

我有一个应用程序,它将解析Youtube播放列表中的数据,数据格式类似于XML。我正在使用SAXParser来做到这一点。但是在使用带有SAXParser的InputStream时出现问题。

SAXParser saxParser = saxFactory.newSAXParser();
XMLReader xmlReader = saxParser.getXMLReader();
xmlReader.setContentHandler(this);
URLConnection urlConnection = new URL(pURL).openConnection();
urlConnection.setConnectTimeout(10000);
InputStream inputStream = urlConnection.getInputStream();/*always die here*/
xmlReader.parse(new InputSource(inputStream));

包含代码的类正在扩展DefaultHandler。 使用此代码,如果我使用class DataASyn extends AsyncTask<Void, Void, Void>运行它可以运行良好,但是当我在没有DataAsyn的情况下运行时,它总是像我上面描述的那样死亡。我不知道为什么 ???? 我也在后台调试,并认识到InputStream inputStream = urlConnection.getInputStream();程序会在继续运行之前暂停几秒钟,也许是在等待数据?!? 我希望上面的所有信息,任何人都会知道发生了什么,并给我任何想法。

谢谢, 莱恩

1 个答案:

答案 0 :(得分:0)

它在您的异步任务中起作用,否则“死亡”可能意味着您获得了NetworkOnMainThreadException。当代码在AsyncTask中执行时,它在除UI-Thread之外的其他线程上执行。当您在AsyncTask外部运行此代码时,可能是您的UI-Thread,如果我没记错的话,这个异常会在Android 3.0+上抛出。

此外,从任何端点获取输入流都需要一些时间,因为它是网络操作。当用断点踩过它时,不要指望它是另一个瞬间。