大規模なデータベースを使用する場合、私の場合、約 20 の DataSource 定義 (DS ごとに 2 ~ 5 個のテーブルが同じ SQLiteDatabase に格納されています) で、ほとんど問題は発生しません。
例えば:
- スレッド同期 ( ReentrantLock、同期ロック)
- SQLiteOpenHelperサブクラスのシングルトン ( 1 , 2 ) パターン
- SQLiteOpenHelperや DataSources
のシングルトンでコンテキスト リークが発生する可能性があります
- または、アプリケーションのコンテキストを使用する場合は大きなメモリ ヒープ (
Context.getApplicationContext()
)
- または、アプリケーションのコンテキストを使用する場合は大きなメモリ ヒープ (
アプリケーションのデータを他のサービス/アプリケーション ( 1、2 ) に公開しない場合は ContentProviders を使用する必要がないことはわかっていますが、上記の問題のほとんどを解決し、ブロードキャストや使用法などの興味深い機能の実装を許可/プッシュすると思いますデータにアクセスするためのカーソル。
それはContentProviderパターンの単なる誤解ですか、それとも言及されているだけでなく、可能性のある問題に対する本当に複雑な解決策ですか?