有什么方法可以获取 XMLPullParser 函数的进度吗?
Is there any way to get the progress of an XMLPullParser function?
解析需要一些时间,所以我希望能够显示一个进度条。但是我似乎无法找到一种方法来更新进度。
问题来自这样一个事实,即似乎没有一种方法(至少我知道)来检测 pullparser.next()
将 运行 的次数。我试过在最初加载数据时添加和计算换行符,认为这也没有给出正确的结果。
int eventType = pullparser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.START_TAG) {
//Do stuff
}
eventType = pullparser.next();
//Update progress by x%
}
我目前已经设计了一个解决方法,如果有人无意中发现了这个话题,请放在这里。只要您在原始 XML 字符串中保留换行符:如果您检查 eventtype 是文本并且它是空白,然后只增加计数器,您就可以计算出进度。
private int incrementPullParser(int eventType, XmlPullParser xpp) throws XmlPullParserException, IOException {
if (eventType == XmlPullParser.TEXT && xpp.isWhitespace()){
//used for counting the progress
currentLines++;
publishProgress((double)(currentLines/maxLines)*100);
return xpp.next();
}
return eventType;
}
解析需要一些时间,所以我希望能够显示一个进度条。但是我似乎无法找到一种方法来更新进度。
问题来自这样一个事实,即似乎没有一种方法(至少我知道)来检测 pullparser.next()
将 运行 的次数。我试过在最初加载数据时添加和计算换行符,认为这也没有给出正确的结果。
int eventType = pullparser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.START_TAG) {
//Do stuff
}
eventType = pullparser.next();
//Update progress by x%
}
我目前已经设计了一个解决方法,如果有人无意中发现了这个话题,请放在这里。只要您在原始 XML 字符串中保留换行符:如果您检查 eventtype 是文本并且它是空白,然后只增加计数器,您就可以计算出进度。
private int incrementPullParser(int eventType, XmlPullParser xpp) throws XmlPullParserException, IOException {
if (eventType == XmlPullParser.TEXT && xpp.isWhitespace()){
//used for counting the progress
currentLines++;
publishProgress((double)(currentLines/maxLines)*100);
return xpp.next();
}
return eventType;
}