Android 不要使用赢得';t共享需要内容提供商吗?
由于我注意到SimpleCursorAdapter类已被弃用,我现在应该利用新的加载器API,这是我非常喜欢的,但是当我尝试这样做时,我发现CursorLoader仅适用于ContentProvider 现在我的问题是,我真的需要一个内容提供商吗?甚至官方指南也说: 如果不打算与其他应用程序共享数据,则无需开发自己的提供商。但是,您确实需要自己的提供商在自己的应用程序中提供自定义搜索建议。如果要将复杂数据或文件从应用程序复制并粘贴到其他应用程序,还需要自己的提供程序 我想我不需要任何关于这个的东西,因此它会造成不必要的复杂性。 所以我应该怎么做,修改我自己的游标加载程序,使其只与我的数据库一起工作,就像这样(),老实说,我真的不喜欢这样,还是我应该接受它,并遵从提供程序的要求Android 不要使用赢得';t共享需要内容提供商吗?,android,android-contentprovider,android-cursorloader,Android,Android Contentprovider,Android Cursorloader,由于我注意到SimpleCursorAdapter类已被弃用,我现在应该利用新的加载器API,这是我非常喜欢的,但是当我尝试这样做时,我发现CursorLoader仅适用于ContentProvider 现在我的问题是,我真的需要一个内容提供商吗?甚至官方指南也说: 如果不打算与其他应用程序共享数据,则无需开发自己的提供商。但是,您确实需要自己的提供商在自己的应用程序中提供自定义搜索建议。如果要将复杂数据或文件从应用程序复制并粘贴到其他应用程序,还需要自己的提供程序 我想我不需要任何关于这个的东
谢谢 两个选项都和另一个一样好。这是偏好的问题 就我个人而言,我认为使用内容提供商开发的应用程序不会与其他应用程序共享任何东西,这是一件恼人的事,也是一件令人头疼的事,但我在一次采访中听到了一个有效的建议(来自那些大型初创应用程序(如Pocket或Flipboard)的开发者),他说:“即使一开始听起来可能很复杂,也要用Android的方式编写代码,因为这样将来会节省时间/精力”
我认为建议集中在以下事实上:使用推荐的方法,可以获得支持、修复bug,并且更易于扩展。您可以编写
加载程序(或者使用公共软件
)直接查询您的SQLiteDatabase
。文档是正确的,因为如果您的应用程序只需要简单访问本地数据(而不是与不同的进程/应用程序共享该数据),则您实际上不需要ContentProvider
也就是说,ContentProvider
确实提供了一些好处。例如,您需要一个来实现一个SyncAdapter
或一个带有SearchManager
的搜索接口。我试图将这些整合到我的应用程序中,因此我发现自己一直在实现ContentProvider
sode>还提供了一种在进行更改时向基础数据源提供全局通知的简单方法。例如,CursorLoader
将在其光标上注册ContentObserver
,使光标在调用ContentResolver\notifyChange>时收到通知(Uri,ContentObserver)
在给定的Uri
上。如果您直接从SQLiteDatabase
加载数据,则设置此项需要更多的工作。这解释了为什么不应使用managedQuery
和startManagingCursor
方法。SimpleCursorAdapter
类没有被弃用(创建SimpleCorsOrAdapter
的构造函数之一已被弃用)。是的,很抱歉,我认为这很糟糕。谢谢你的回复。它的可能重复并不是一个真正的“偏好问题”…每种方法都有起起伏伏。ContentProvider
无论发生什么情况,都能正常工作(因为它几乎只是实际数据源的一个包装器),但如果您实际上不需要它,那么实现它将是额外的工作。使用自定义ContentProvider,您可以执行复杂的查询,如join、having、group by等吗。?