因为我注意到类 SimpleCursorAdapter 已被弃用,我现在应该利用我非常喜欢的新加载器 API,但是当我尝试这样做时,我发现 CursorLoader 只能与 ContentProvider 一起使用。
现在我的问题是,我真的需要内容提供商吗?甚至官方指南也说:
You don't need to develop your own provider if you don't intend to share your data with other applications. However, you do need your own provider to provide custom search suggestions in your own application. You also need your own provider if you want to copy and paste complex data or files from your application to other applications.
而且我认为我不需要任何关于此的内容 + 因此它会产生不必要的复杂性。 所以 .. 我应该怎么办,破解我自己的 CursorLoader 以仅与我的数据库一起工作(CursorLoader usage without ContentProvider),老实说我真的不喜欢,或者我应该接受它并符合成为提供者?
谢谢!
最佳答案
您可以编写一个Loader
(或使用CommonsWare
的SQLiteCursorLoader
)来直接查询您的SQLiteDatabase
。该文档是正确的,因为如果您的应用程序只需要简单地访问本地数据(而不是与不同的进程/应用程序共享该数据),那么您实际上并不需要 ContentProvider
。
也就是说,ContentProvider
确实提供了一些好处。例如,您需要一个来实现 SyncAdapter
或使用 SearchManager
的搜索接口(interface)。我尝试将这些合并到我的应用程序中,因此我发现自己一直在实现 ContentProvider
。 ContentResolver
还提供了一种在发生更改时向基础数据源提供全局通知的简单方法。例如,CursorLoader
将在其 Cursor
上注册一个 ContentObserver
,当您在给定的 Uri
上调用 ContentResolver#notifyChange(Uri uri, ContentObserver observer)
。如果您要直接从 SQLiteDatabase
加载数据,则设置它需要更多的工作。
关于android - 不会共享的应用程序是否需要内容提供程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11970624/