数据库泄漏,拍照时。 SQLiteDatabase已创建且从未关闭。 Android,Java,SQLite

时间:2010-08-18 02:00:42

标签: java android sqlite memory-leaks

再次问候。拍照时我有一个小问题。我有一个按钮,可以调用相机,成功拍照,然后返回我的报名表。我唯一的问题是按下按钮调用摄像机时发生数据库泄漏。我的代码看起来有点像这样。

public void takephoto(){

        Intent in = new
        Intent(this, takephoto.class);
        startActivityForResult(in,1);
    }

以下是数据库打开方式的片段:

 public journalDbAdapter open() throws SQLException {
        mDbHelper = new DatabaseHelper(mCtx);
        mDb = mDbHelper.getWritableDatabase();
        return this;
    }

    public void close() {
        mDbHelper.close();
    }

我跑:

mDbHelper = new journalDbAdapter(this);
        mDbHelper.open();

在我调用摄像机的活动或类的onCreate中。我没有在mDbHelper.close()中编码;任何地方都不确定我应该何时何地。我想我宁愿在拍摄一张图像时保持打开状态。

logcat的:

08-17 21:33:37.582: ERROR/Database(18297): java.lang.IllegalStateException: /data/data/com.growjournal.beta/databases/grower SQLiteDatabase created and never closed
08-17 21:33:37.582: ERROR/Database(18297):     at android.database.sqlite.SQLiteDatabase.(SQLiteDatabase.java:1785)

如果从未修复过,我可能面临哪些问题?

一切似乎都运行良好,但我肯定会避免在那里的许多Android设备之间出现任何问题。

2 个答案:

答案 0 :(得分:1)

您收到此错误是因为相机应用程序是一个巨大的内存耗尽,很可能导致您的应用程序关闭而不是暂停。您应该保存记录并在onPause中关闭数据库,并在onResume和/或onCreate中重新打开它。

答案 1 :(得分:0)

我认为你错过了这一行

mDb.close();