Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.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 实现ContentProvider只是为了能够使用加载器_Android_Sqlite_Android Contentprovider_Loader - Fatal编程技术网

Android 实现ContentProvider只是为了能够使用加载器

Android 实现ContentProvider只是为了能够使用加载器,android,sqlite,android-contentprovider,loader,Android,Sqlite,Android Contentprovider,Loader,我有一个sqlite数据库,其中包含要异步加载到ListView的数据。 我知道加载器支持简单的异步数据获取+在数据更改时得到通知,但从我所看到的情况来看,加载器与ContentProviders一起工作 因为在过去,它说 仅当您需要在多个应用程序之间共享数据时,才需要内容提供商 我觉得使用加载器需要一个ContentProvider很奇怪 我在其中一个答案的评论中发现 。。。考虑到这一点,我只是觉得我应该实现一个内容提供商,即使对于我可能想在显示器上列出的任何小型数据库来说,这似乎是一个过度的

我有一个sqlite数据库,其中包含要异步加载到ListView的数据。 我知道加载器支持简单的异步数据获取+在数据更改时得到通知,但从我所看到的情况来看,加载器与ContentProviders一起工作

因为在过去,它说

仅当您需要在多个应用程序之间共享数据时,才需要内容提供商

我觉得使用加载器需要一个ContentProvider很奇怪

我在其中一个答案的评论中发现

。。。考虑到这一点,我只是觉得我应该实现一个内容提供商,即使对于我可能想在显示器上列出的任何小型数据库来说,这似乎是一个过度的操作


这是推荐的行动方案吗?是否有其他选择?

游标加载程序设计用于与内容提供商配合使用,但您可以实现自定义加载程序,直接与数据库配合使用,而无需实现内容提供商。
看看->

呵呵,我以为装载机是为了让生活更轻松。。。使用该教程中的代码是否会触发插入、删除。。。就像ContentProviders一样,它们确实让生活变得更轻松,加载程序跟踪数据源,以便在数据更改时提供新结果。LoaderManager负责配置更改。e、 g.比较常规AsyncTask和加载程序版本AsyncTaskLoader;在第一种情况下,当设备方向发生变化时,您必须手动处理,并且无法获得更新,AsyncTaskLoader会为您完成所有这些。好的,我给了您建议的教程一个机会。只要我从拥有ListView的片段中执行操作,这就可以正常工作,因为我可以使用相同的加载程序执行CRUD操作。但在我的例子中,我能够从另一个片段向数据库添加项。在该片段中,我无法使用ListView访问属于我的片段的加载程序,因此我无法听取这些更改LoaderManager将加载程序与其创建组件的生命周期联系起来,在教程中,这是片段,因为它使用getLoaderManager.initLoader,这意味着当您转到另一个片段时,加载程序将停止。改为从活动获取LoaderManager:getActivity.getLoaderManager.initLoader或getActivity.getSupportLoaderManager.initLoader(如果您使用的是支持库)。通过这种方式,加载程序与活动的生命周期相关联,只要它们显示在同一活动中,您就可以在所有片段之间共享它们。