0

OrmLite を使用しており、OrmLiteBaseActivity を拡張しないクラスでヘルパー クラスを取得したい (そして dao クラスを取得したい)。

Android での使用に関するドキュメントを読み、no base class exampleを見ました。

私のクラスは Activity ではないので:

  1. Context ではないため、OpenHelperManager.getHelper は機能しません。

    アプリケーションを使用してアプリケーションのすべての部分からコンテキストを取得できることはわかっていますが、より良い方法はありますか?

  2. オーバーライドする onDestroy はありません。

    関数の最後にロジックを配置できます。

    if (databaseHelper != null) {
        OpenHelperManager.releaseHelper();
        databaseHelper = null;
    }
    

    しかし、私のクラスがより複雑になった場合、どのような振る舞いが良いのでしょうか?

よろしく。

4

1 に答える 1

1

一般的な経験則では、単一のヘルパー オブジェクトを作成し、プログラムのすべての部分が完了したら解放する必要があります。これは、ヘルパーを使用している別のスレッドがある場合、ある種の使用カウンターを保持する必要があることを意味しますAtomicInteger。各クラスがヘルパーを要求すると、初めてヘルパーが作成されますが、その後は毎回カウンターが増加します。ヘルパーの処理が完了すると、カウンターが減少します。カウンターが 0 になったら、 から解放しOpenHelperManagerます。

Context ではないため、OpenHelperManager.getHelper は機能しません。

Context何らかの方法で取得する必要があります。アプリケーションが機能する限り、アプリケーションを使用しても問題ありません。

オーバーライドする onDestroy がありません

しかし、あなたのプログラムの一部にonDestroy. ある場所からアプリケーションの他の部分を適用する必要があります-おそらく静的メソッドonDestroyを呼び出すことによって。destroy()

しかし、私のクラスがより複雑になった場合、どのような振る舞いが良いのでしょうか?

複雑なアプリケーションでも、上記で問題はありません。必要に応じて、設定の登録/登録解除タイプをセットアップして、クラスが構築されるときに、それらが中央クラスに登録され、最後にシャットダウンされるようにします。

これが役立つことを願っています。

于 2012-06-12T12:30:15.393 に答える