我有一个应用程序,它将解析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();
程序会在继续运行之前暂停几秒钟,也许是在等待数据?!?
我希望上面的所有信息,任何人都会知道发生了什么,并给我任何想法。
谢谢, 莱恩
答案 0 :(得分:0)
它在您的异步任务中起作用,否则“死亡”可能意味着您获得了NetworkOnMainThreadException。当代码在AsyncTask中执行时,它在除UI-Thread之外的其他线程上执行。当您在AsyncTask外部运行此代码时,可能是您的UI-Thread,如果我没记错的话,这个异常会在Android 3.0+上抛出。
此外,从任何端点获取输入流都需要一些时间,因为它是网络操作。当用断点踩过它时,不要指望它是另一个瞬间。