正如问题所述,我想知道如何追查这种错误的原因.
在我对这个错误的研究中,我发现了使用输入流的各种事情.当它被调用两次时,它会给出异常.但是我的代码与那些代码没什么相似之处.我在ViewPager中使用AndroidSaxParser.每个片段执行一个AsyncTask,它解析rss并将数据加载到ListView中.
问题随机发生,这使得很难追踪问题的原因.我也注意到在api 14+设备上根本没有出现问题.它只发生在我的api 8设备上,可能发生在其他设备上 我得到的确切Expat错误是: LogCat指向的代码只是启动解析器的代码,但是没有任何内容为null或与正确执行的时间不同. 跟踪:
错误ExpatParser$ParseException at line 1 column 0 no element found
try
{
Xml.parse(this.getInputStream(), Xml.Encoding.UTF_8, root.getContentHandler());
}
catch (Exception e)
{
Log.e("parser", "PARSER CRASHED");
Log.e("expat", "inputStream " + this.getInputStream() + " xml " + Xml.Encoding.UTF_8 + " contentHandler " + root.getContentHandler());
Log.w("the feed", "" + rssFeed);
throw new RuntimeException(e);
}
在解析它时,您使用的inputStream是空的.首先读取整个inputStream,然后解析内容.