Android 试图重新查询已关闭的光标
我只是做一些简单的查询,比如:Android 试图重新查询已关闭的光标,android,sqlite,cursor,illegalstateexception,Android,Sqlite,Cursor,Illegalstateexception,我只是做一些简单的查询,比如: Cursor c = databaseHelper.getReadableDatabase().rawQuery("select " + MyTable.TABLE_FIELD.getColumnName() + " from " + MyTable.TABLE_NAME, null); 之后,我提取所需的数据并填充一些视图 c.close(); 一切正常。我有一份分享意向,希望发送一封包含所示信息的电子邮件。java.lang.IllegalStateExc
Cursor c = databaseHelper.getReadableDatabase().rawQuery("select " + MyTable.TABLE_FIELD.getColumnName() + " from " + MyTable.TABLE_NAME, null);
之后,我提取所需的数据并填充一些视图
c.close();
一切正常。我有一份分享意向,希望发送一封包含所示信息的电子邮件。java.lang.IllegalStateException
是在电子邮件应用程序发送电子邮件或关闭并且我的活动恢复“生命”后引发的。
只有在这种情况下才会引发此异常,如果我将其发送到后台,然后再次调用它,则不会引发此异常。我甚至想打开youtube并播放视频,但这个异常不会被抛出
我真的不知道为什么会这样
谢谢你抽出时间
ps:我试过
//c.close()
但它也不起作用。您可以使用c.requery()
,但它在API级别11中被弃用
不要用这个。只需请求一个新光标,就可以执行此操作
异步,并在新光标出现后更新列表视图
回来
再次执行创建光标的查询,刷新其
目录这可以在任何时候进行,包括在致电
停用()。因为此方法可以在数据库上执行查询
并且可能需要一段时间,如果调用它,可能会导致ANR
主(UI)线程。如果正在使用此方法,则会打印警告
在主线程上执行
我找到了导致这个问题的原因。电子邮件的一些信息是由“utils”类的另一个游标提供的。此光标在向电子邮件提供信息后关闭,这是导致问题的原因。而不是
c.close()
I改为c=null代码>现在它开始工作了
也许不是最好的解决方案,但目前它正在发挥作用。
谢谢。这对我很有效
public void onBackPressed() {
Intent i = new Intent(getApplicationContext(), ClassName.class);
startActivity(i);
finish();
super.onStop();
}
我认为最好的政策是这样的:对,但你的问题有所不同;)