我知道这个论坛有类似的论坛帖子,但是我已经阅读了它们并尝试了解决问题的方法,但它似乎没有这样做。 我得到了:
close()从未明确调用数据库/数据/数据......
应用程序未关闭已打开的数据库或游标...
我的错误不是直接发生的,它发生在一段时间后,当我在两个活动之间来回走动时。
我使用两个需要连接到数据库的活动。我的想法是第一个活动在其他活动开始之前关闭数据库。这是我的代码:
@Override
public void onCreate(Bundle savedInstance) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
movies = new MoviesData(this);
cursor = getTitles();
showTitles(cursor);
}
@Override
public void onPause() {
movies.close();
super.onPause();
}
@Override
public void onResume() {
movies = new MoviesData(this);
super.onResume();
}
这是我的第一个活动,第二个活动非常相似,并且是在按钮开始时启动的。 MoviesData类只是一个空的SQLiteOpenHelper类,如下所示。
public class MoviesData extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "movies.db";
private static final int DATABASE_VERSION = 1;
public MoviesData(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
}
我现在知道何时显示错误。如果我退出应用程序然后再次打开它并尝试执行错误显示的操作。我试图在“onDestroy()”中关闭数据库,但这也无济于事......
答案 0 :(得分:0)
//
@Override
public void onPause() {
super.onPause();
movies.close();
cursor.close();
}
// no need to write this code
@Override
public void onResume() {
movies = new MoviesData(this);
super.onResume();
}
答案 1 :(得分:0)
我现在就开始工作了! 我刚刚将它添加到我的SQLiteOpenHelper类中。
public class MoviesData extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "movies.db";
private static final int DATABASE_VERSION = 1;
private static MoviesData movies;
private MoviesData(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public static MoviesData getInstance(Context context) {
if (movies == null) {
movies = new MoviesData(context);
}
return movies;
}
}