gpt4 book ai didi

Android SQLite 泄漏问题

转载 作者:行者123 更新时间:2023-11-29 00:49:21 25 4
gpt4 key购买 nike

嘿,我已经在 Android 应用程序中设置了数据库连接,但 LogCat 一直告诉我 SQLite 泄漏。

12-03 15:07:23.169: ERROR/Database(2509): Leak found
12-03 15:07:23.169: ERROR/Database(2509): java.lang.IllegalStateException: /data/data/com.domain/databases/db.db SQLiteDatabase created and never closed
12-03 15:07:23.169: ERROR/Database(2509): at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1784)
12-03 15:07:23.169: ERROR/Database(2509): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:804)
12-03 15:07:23.169: ERROR/Database(2509): at com.domain.DatabaseConnection.openDataBase(DatabaseConnection.java:118)
12-03 15:07:23.169: ERROR/Database(2509): at com.domain.global.ZonesLoaded.InitZones(ZonesLoaded.java:32)
12-03 15:07:23.169: ERROR/Database(2509): at com.domain.ZoneActivity.onCreate(ZoneActivity.java:34)
12-03 15:07:23.169: ERROR/Database(2509): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
12-03 15:07:23.169: ERROR/Database(2509): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2544)
12-03 15:07:23.169: ERROR/Database(2509): at android.app.ActivityThread.startActivityNow(ActivityThread.java:2411)
12-03 15:07:23.169: ERROR/Database(2509): at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:127)
12-03 15:07:23.169: ERROR/Database(2509): at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:339)
12-03 15:07:23.169: ERROR/Database(2509): at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:648)
12-03 15:07:23.169: ERROR/Database(2509): at android.widget.TabHost.setCurrentTab(TabHost.java:320)
etc...

阅读其他帖子后like herehere ,这表明我没有在我的 DBAdapter 类中实现 close 方法。但是我确实创建了这个:

public synchronized void close()
{
if(myDatabase != null)
myDatabase.close();

super.close();
}

我开始怀疑这是否取决于我使用数据库适配器的方式,尽管我刚刚在更快的设备 (Samsung Galaxy S) 上测试了我的应用程序并且没有任何问题!这里有人有任何提示吗?

谢谢

最佳答案

我也遇到了这个问题,直到我确保在我的 Activity 的 onPause 方法中显式调用 close 。我倾向于遵循在恢复/创建时打开数据库并在暂停前关闭它的模式(与所有其他保持状态的资源一样)。

明确地说,我不建议按需或临时打开/关闭数据库。几乎总是最好尽早打开数据库并在 Activity 期间保持打开状态,并在 Activity 暂停时关闭它。

关于Android SQLite 泄漏问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4346992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com