4

アクティビティからだけでなく、BroadcastReceivers や AsyncTasks などからもヘルパーにアクセスできる必要があります。OrmLiteBaseActivity を使用してアプローチする場合は、次のメソッドを使用することです。

OpenHelperManager.getHelper(context, DatabaseHelper.class);
OpenHelperManager.releaseHelper();

アクティビティクラスではありませんか?

編集:

ヘルパーのライフサイクルが によって処理されることを理解していますOrmLiteBaseActivity。私が求めているのは、アクティビティの外でヘルパーのライフサイクルを処理する方法です。たとえば、BroadcastReceiverまたはからデータベースにアクセスする必要がありますAsyncTask。すべてのデータベース作業を完了してヘルパーを解放したいときにOpenHelperManager.getHelper(context, DatabaseHelper.class);、別のスレッドでいくつかのデータベースのものを開始しているときに、を使用してこれを達成する正しい方法ですか?OpenHelperManager.releaseHelper();

4

1 に答える 1

5

OrmLiteBaseActivity を使用してアプローチする場合は、このメソッドを使用することです...

はい、メソッドOpenHelperManager.getHelper(...)releaseHelper()メソッドを使用するのが正しい方法です。ORMLite Android docsから引用するには:

OrmLiteBaseActivity およびその他の基本クラスを拡張したくない場合は、それらの機能を複製する必要があります。コードの最初で呼び出しOpenHelperManager.getHelper(Context context, Class openHelperClass)、ヘルパーを保存して必要なだけ使用し、使い終わったら呼び出すOpenHelperManager.release()必要があります。おそらく、クラスに次のようなものが必要になるでしょう。

ドキュメントのサンプル コードは次のとおりです。

private DatabaseHelper databaseHelper = null;

@Override
protected void onDestroy() {
    super.onDestroy();
    if (databaseHelper != null) {
        OpenHelperManager.releaseHelper();
        databaseHelper = null;
    }
}

private DBHelper getHelper() {
    if (databaseHelper == null) {
        databaseHelper =
            OpenHelperManager.getHelper(this, DatabaseHelper.class);
    }
    return databaseHelper;
}
于 2013-07-29T15:43:07.553 に答える