2012-01-04 15 views
3

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

現在、私はデフォルトの設定に基づいて、新しいSqlLiteDatabaseオブジェクトを作成するためにdummy factory-classを使用しています。

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; } 

それから私は、同じデータ・インサータ・スレッドに適用され、各フラグメントからこれを呼び出すとアダプタを設定します。データベースを閉じるために、私は自分のアクティビティのonDestroy()をオーバーライドして、initFor(this).close();を呼び出します。 。

これは非常に醜いので、方向変更に失敗します。私はSQLiteOpenHelperについて考えているが、それがどのように役立つのかわからない。

+0

この問題に関する解決策はまだありますか? –

+0

まあまあではありませんが、ベストプラクティスのsoloutionは常に高く評価されています。 とにかく、ActiviteがSqlLiteDatabaseへの参照を扱う抽象クラスDatabaseActivityを継承するようになりました。私はシングルトンを避けることを好む。 – tkhduracelll

+0

将来的に他の人が分かりやすくなるように、フラグメントが変更されたら、同じクエリとカーソルを使用していたのでしょうか、それらを再構築していましたか? –

答えて

0

あなたは別のスレッド(サービス内)でデータベースにアクセスしてから、このクラスを1つのクラス(ヘルパーの可能性があります)に話して、アプリケーションを拡張するクラスで初期化されたシングルトンでこのヘルパークラスにアクセスしてください。

((YourApplication) context.getApplicationContext()).getGetDatabaseHelper(); 
+0

これはまだ時間の解決策ですか、ヘッドレスフラグメントを使用するべきですか? – tkhduracelll

+0

ヘッドレスフラグメントも使用できます。私は今、 'getActivity()。getContentResolver()'で簡単にアクセス可能なContentProviderを使うことをお勧めしたいと思います。 – Blundell

関連する問題