3

データのリストを表示するフラグメントと、バックグラウンドでデータを更新するさまざまなスレッド/クラスとの間の参照を処理するにはどうすればよいですか。このため、Observer-infなどを介してフラグメントの外部から強制的に更新できるようにする必要があります。

現在、ダミーのファクトリクラスを使用して、デフォルト設定に基づいて新しいSqlLiteDatabaseオブジェクトを作成しています。

public static SQLiteDatabase initFor(Context context) {
    db = context.openOrCreateDatabase(NAME, SQLiteDatabase.CREATE_IF_NECESSARY, null);
    db.setLocale(Locale.getDefault());
    db.setVersion(1);
    db.setLockingEnabled(true);
    return db; }

次に、これを各フラグメントから呼び出してアダプターをセットアップします。同じことがdata-inserter-threadsにも当てはまります。データベースを閉じるには、アクティビティのonDestroy()をオーバーライドして、次のように呼び出します。initFor(this).close(); 。

これは非常に醜く、向きを変えると失敗します。SQLiteOpenHelperについて考えていますが、それがどのように役立つかわかりません。

4

1 に答える 1

0

(サービス内の)別のスレッドでデータベースにアクセスしてから、このヘルパーを1つのクラス(ヘルパーになる可能性があります)と通信し、Applicationを拡張するクラスで初期化されたシングルトンを介してこのヘルパークラスにアクセスする必要があります。を呼び出すことにより、任意のフラグメントからApplicationクラスを取得できます。

 ((YourApplication) context.getApplicationContext()).getGetDatabaseHelper();
于 2012-06-10T22:25:49.297 に答える