Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 不要使用赢得';t共享需要内容提供商吗?_Android_Android Contentprovider_Android Cursorloader - Fatal编程技术网

Android 不要使用赢得';t共享需要内容提供商吗?

Android 不要使用赢得';t共享需要内容提供商吗?,android,android-contentprovider,android-cursorloader,Android,Android Contentprovider,Android Cursorloader,由于我注意到SimpleCursorAdapter类已被弃用,我现在应该利用新的加载器API,这是我非常喜欢的,但是当我尝试这样做时,我发现CursorLoader仅适用于ContentProvider 现在我的问题是,我真的需要一个内容提供商吗?甚至官方指南也说: 如果不打算与其他应用程序共享数据,则无需开发自己的提供商。但是,您确实需要自己的提供商在自己的应用程序中提供自定义搜索建议。如果要将复杂数据或文件从应用程序复制并粘贴到其他应用程序,还需要自己的提供程序 我想我不需要任何关于这个的东

由于我注意到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等吗。?