I have an ListActivity
that is bound to a cursor, when items in the ListView
are selected an EditItem
activity is launched by startActivityForResult
, this EditItem
activity preforms several queries, each placed in their own separate Cursor. 这些用于填充微调器,很像 Access DB 中的查找字段。
我的问题是,一旦用户EditItem
通过提交、取消或返回按钮离开此活动,就会返回活动并在(相同或不同的项目)ListView
中选择另一个条目,我在课堂上遇到错误(Android 的,不是我的)。我在两个活动的方法中都关闭了我的游标,因为有时调用结果仍会破坏调用活动。 ListView
IllegalStateException
SQLiteCursor
onDestroy
这并不总是发生在第二次选择项目时,有时会发生在第三次选择时。我想也许我只是比操作系统移动得更快,所以我开始在我的动作之间暂停长达 30 秒,只有在第二次或第三次调用活动以获得结果后才会抛出错误。没有多少暂停可以解决这个问题。
编辑:错误在SQLiteCursor finalize
调用的方法中super.finalize();
编辑#2:线程的堆栈跟踪:
Daemon System Thread [<5> HeapWorker] (Suspended (exception IllegalStateException))
SQLiteCursor.finalize() line: 603
NativeStart.run() line: not available [native method]
编辑来自 LogCat 的 #3 堆栈跟踪(partslist 是表名):
INFO/dalvikvm(599): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@437541a0 on partslist that has not been deactivated or closed
INFO/dalvikvm(599): at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
INFO/dalvikvm(599): at dalvik.system.NativeStart.run(Native Method)