Android SQLite关闭数据库之间的2个活动

时间:2011-09-02 11:56:58

标签: android database sqlite

我知道这个论坛有类似的论坛帖子,但是我已经阅读了它们并尝试了解决问题的方法,但它似乎没有这样做。 我得到了:

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()”中关闭数据库,但这也无济于事......

2 个答案:

答案 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;
    }

}