最近遇到了 一个异常
cursorindexoutofboundsExceptio: After last row
字面意思已经很直白了,cursor已经被移到最后一行的后面,无法进行有效查询
网上大部分的建议是 : 添加 moveTofirst()方法
那么有没有可能是其他原因,我们需要从这个exception的源码入手
/**
* Gets value at the given column for the current row.
*/
private Object get(int column) {
if (column < 0 || column >= columnCount) {
throw new CursorIndexOutOfBoundsException("Requested column: "
+ column + ", # of columns: " + columnCount);
}
if (mPos < 0) {
throw new CursorIndexOutOfBoundsException("Before first row.");
}
if (mPos >= rowCount) {
throw new CursorIndexOutOfBoundsException("After last row.");
}
return data[mPos * columnCount + column];
}
源码中的mPos 是指第几行的意思 rowCount 就是cursor查询结果的总行数,这里的mPos在查询第一行时,取得的值为0
在反复打印数据后,错误只能定位到provider被kill
看来问题复杂了...