lor*_*tol 20 android cursor android-cursor
1 Cursor cursor = contentResolver.query(MY_URI, new String[] { "first" }, null, null, null);
2 if (cursor != null) {
3 if (cursor.moveToFirst()) {
4 first = cursor.getString(cursor.getColumnIndex("first"));
5 cursor.close();
6 }
7 }
Run Code Online (Sandbox Code Playgroud)
然后在第3行(根据日志),我偶尔会遇到这个例外(摘录如下):
android.database.CursorWindowAllocationException: Cursor window could not be created from binder.
at android.database.CursorWindow.<init>(CursorWindow.java:134)
at android.database.CursorWindow.<init>(CursorWindow.java:41)
at android.database.CursorWindow$1.createFromParcel(CursorWindow.java:709)
at android.database.CursorWindow$1.createFromParcel(CursorWindow.java:707)
at android.database.CursorWindow.newFromParcel(CursorWindow.java:718)
at android.database.BulkCursorProxy.getWindow(BulkCursorNative.java:196)
Run Code Online (Sandbox Code Playgroud)
...
任何想法为什么抛出这个例外?谢谢!
Jus*_*ler 26
我怀疑这个错误可能与你没有正确关闭游标有关.尝试:
Cursor cursor = contentResolver.query(MY_URI, new String[] { "first" }, null, null, null);
if (cursor != null) {
if (cursor.moveToFirst()) {
first = cursor.getString(cursor.getColumnIndex("first"));
}
cursor.close(); ///// Changed here
}
Run Code Online (Sandbox Code Playgroud)
应始终关闭光标(无论其是否为空).确保您的应用的其余部分也是这样做的.
GrI*_*sHu -1
试试这个方法:
Run Code Online (Sandbox Code Playgroud)if (cursor != null) { cursor.moveToFirst(); do { first = cursor.getString(cursor.getColumnIndex("first")); }while(cursor.moveToNext());}
| 归档时间: |
|
| 查看次数: |
11480 次 |
| 最近记录: |