Sqlite内存泄漏。糟糕的教程或它的用法?

时间:2015-07-09 11:28:27

标签: android sqlite memory-leaks sqliteopenhelper

我正在尝试构建我的第一个应用程序,但正在与sqlite进行斗争。

我明白了

W/SQLiteConnectionPool﹕ A SQLiteConnection object for database '/data/data/com.example.user.myApp/databases/testJavaNorm.sqlite' was leaked!  Please fix your application to end transactions in progress properly and to close the database when it is no longer needed.
W/SQLiteConnectionPool﹕ A SQLiteConnection object for database '/data/data/com.example.user.myApp/databases/testJavaNorm.sqlite' was leaked!  Please fix your application to end transactions in progress properly and to close the database when it is no longer needed.
W/SQLiteConnectionPool﹕ A SQLiteConnection object for database '/data/data/com.example.user.myApp/databases/testJavaNorm.sqlite' was leaked!  Please fix your application to end transactions in progress properly and to close the database when it is no longer needed.

作为初学者,我使用了Sqlite tutorial。据我所知,我必须在DB类的末尾编写公共方法,并调用它,如3所示。

但Android工作室有时会显示内存泄漏。

我注意到任何地方都没有db.close。所以我在调用方法,后来的公共方法中添加了它。仍然有泄漏。现在我已经读过光标也必须关闭。

我使用本教程错了吗?或者这是一个糟糕的教程?

2 个答案:

答案 0 :(得分:0)

这是你用过的教程。在cursor.close();

之后必须有if (cursor.moveToFirst()) {....}

还是: 我认为有更好的教程可用。本教程中的一些内容没有意义,例如while循环周围的cursor.moveToFirst()I would do this on this way.

答案 1 :(得分:0)

  

我使用本教程错了吗?或者这是一个糟糕的教程?

这是一个非常糟糕的教程。除了你指出的错误之外,它还对文件系统路径进行了硬编码。 从不硬编码文件路径。它也完全打破了SQLiteOpenHelper模型。

对于想要使用您的应用打包数据库的特定情况,请use SQLiteAssetHelper