cursor.getCount()明明有数据,但是moveToNext失败,总在第一条,不能正常移动到下一条,导致这个while死循环。
if (cursor.moveToFirst()) { do { Integer position = Integer.valueOf(cursor.getPosition()); if (mFileNameList.containsKey(position)){ continue; } FileInfo fileInfo = getFileInfo(cursor); if (fileInfo != null) { mFileNameList.put(position, fileInfo); } } while (cursor.moveToNext()); }原因是我在查询到结果返回cursor时,对这个cursor进行了处理,而就在这个处理的过程中异常了,而且被catch住了,所以导致现象异常。
try { if(mLocalCursor != null && mLocalCursor.getCount() > 0 && isTypeAndMusic) { int i = 0; int column = cursor.getColumnIndexOrThrow(columnName); String displayName = null; String[] tempArray = null; int index= 0; for(mLocalCursor.moveToFirst();!mLocalCursor.isAfterLast();mLocalCursor.moveToNext(),i++){ SortEntry sortKey = new SortEntry(); displayName = cursor.getString(column); if (displayName != null) { tempArray = displayName.split("\\."); index = tempArray.length; displayName = tempArray[index - 1]; } sortKey.key = displayName; sortKey.order = i; sortList.add(sortKey); } } } catch (Exception e) { Log.e(TAG, "SortCursor2: exception = " + e); } //Sort Collections.sort(sortList,comparator);