当使用大型数据库时,在我的情况下,大约有 20 个 DataSource 定义(每个 DS 2-5 个表,存储在同一个 SQLiteDatabase 中),很少出现问题
例如:
- 线程同步(ReentrantLock、同步锁)
- SQLiteOpenHelper子类的Singleton ( 1 , 2 ) 模式
- SQLiteOpenHelper和/或 DataSources
的单例上可能的上下文泄漏
- 或者如果使用应用程序的 Context (
Context.getApplicationContext()
)则使用大内存堆
- 或者如果使用应用程序的 Context (
尽管我知道,在不将应用程序的数据暴露给其他服务/应用程序( 1、2 )时,没有必要使用 ContentProviders ,但我认为它解决了上述大多数问题,并允许/推动实现有趣的功能,例如广播或使用访问数据的游标。
这只是对 ContentProvider 模式的误解,还是真的很复杂地解决了可能的问题,而不仅仅是提到的问题?