0

私のデータベース ヘルパー クラスには、db の open メソッドと close メソッドがあります。

public void open() throws SQLException
{
    db = dbOpenHelper.getWritableDatabase();
}

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

また、私の DbHelper クラスには、削除されたものなどを挿入するカスタムメソッドがあります...

私の質問は、どこでデータベースを開いたり閉じたりすればよいですか? ヘルパーまたはのカスタム メソッド内で、各メソッドをアクティビティ内で実行する前と後、または onCreate() と onResume() 内で実行しますか?

4

1 に答える 1

1

最良の方法は、データベースを ContentProvider にラップすることです。これには、データベースをアクティビティ ライフ サイクル イベントから切り離したり、すべてのアクティビティが共通の最新バージョンのデータを参照できるようにするなど、多くの利点があります (たとえば、カーソルを保持しているアクティビティを正しく実行すると、クエリの結果は、カーソルを介してアクセス可能なデータが他のアクティビティによって変更された場合に通知されます。

ただし、これが重すぎると感じた場合 (少し複雑です)、onCreate と onDestroy で開閉できますが、onResume でクエリを再発行し、onPause で書き込みをコミットします。ただし、UI スレッドで操作することに注意してください。そのため、特にクエリは、UI スレッドの時間的制約内で操作できるほど単純でなければなりません。

于 2013-09-26T20:23:32.193 に答える