发现Android数据库泄漏
当我输入另一个活动将新项目插入数据库时,返回然后进入该活动,它会给我一个错误:发现Android数据库泄漏,android,database,getwritabledatabase,Android,Database,Getwritabledatabase,当我输入另一个活动将新项目插入数据库时,返回然后进入该活动,它会给我一个错误: 04-03 18:53:26.914: E/Database(18134): Leak found 04-03 18:53:26.914: E/Database(18134): java.lang.IllegalStateException: /data/data/com.app.myapp/databases/BabyApp.db SQLiteDatabase created and never closed 04
04-03 18:53:26.914: E/Database(18134): Leak found
04-03 18:53:26.914: E/Database(18134): java.lang.IllegalStateException: /data/data/com.app.myapp/databases/BabyApp.db SQLiteDatabase created and never closed
04-03 18:53:26.914: E/Database(18134): at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1695)
04-03 18:53:26.914: E/Database(18134): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:739)
04-03 18:53:26.914: E/Database(18134): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:761)
04-03 18:53:26.914: E/Database(18134): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:754)
04-03 18:53:26.914: E/Database(18134): at android.app.ApplicationContext.openOrCreateDatabase(ApplicationContext.java:473)
04-03 18:53:26.914: E/Database(18134): at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:193)
04-03 18:53:26.914: E/Database(18134): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:98)
04-03 18:53:26.914: E/Database(18134): at com.app.myapp.DatabaseHelper.open(DatabaseHelper.java:121)
04-03 18:53:26.914: E/Database(18134): at com.app.myapp.SettingsActivity.init(SettingsActivity.java:80)
以下是设置活动行80代码:
if (!db.isOpen())
db.open();
确保执行
db.close()代码>以便在切换到其他活动之前关闭数据库
@Override
protected void onStop() {
super.onStop();
//closing database connection
if(db != null)
db.close();
}
你也应该把它关上。。。当发生异常时关闭它,或者在任何情况下,它都不应该保持打开状态,因为它的系统资源
@Override
protected void onStop() {
super.onStop();
//closing database connection
if(db != null)
db.close();
}