android - 我应该使用内容提供商吗?

标签 android sqlite android-contentprovider

我正在阅读来自 android 的内容提供者的官方文档,我看到了这个:

Decide if you need a content provider.

You need to build a content provider if you want to provide one or more of the following features:

  • You want to offer complex data or files to other applications.
  • You want to allow users to copy complex data from your app into other apps.
  • You want to provide custom search suggestions using the search framework.
  • You don't need a provider to use an SQLite database if the use is entirely within your own application.

我正在开发一个应用程序,当位置通过 IntentService 发生变化时,它会在后台同步数据。

我所看到的是,使用 ContentProvider 时,您可以观察到我真正想要的数据更改,而用户不会注意到它。它在 IntentService 中发生变化,MainActivity 观察到这种变化,并在收到通知时布局内容发生变化

使用 ContentProvider 是不是一个好主意,尽管他们甚至没有提到这一点?

谢谢

最佳答案

就我个人而言,在过去一年半的时间里,我一直在我的所有项目中使用 ContentProvider。它们提供良好的、独立于数据库的数据抽象来访问您的数据。它们非常灵活,我什至有一个游戏项目,其中一个 URI 指向 SharedPreference,而所有其他 URI 都用于访问数据库表。 ContentProvider 还允许您使用已经构建的框架基础设施,例如 CursorLoaders。从接口(interface)和抽象类实现您自己的接口(interface)和抽象类并不难,但它可能很耗时且容易出错,能够仅利用已经尝试和测试的工作是一个很大的优势。

顺便说一下,我记得大约 2 周前在 google+ 上的一篇帖子中提出了同样的问题,Cyril Mottier 给出了非常好的答案。可以看一下here .

关于android - 我应该使用内容提供商吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15056506/

相关文章:

multithreading - 在这种情况下 SQLite 线程安全吗?

ruby-on-rails - 如何正确使用belongs_to和has_many?

android - 了解使用 ContentUris.appendId 查询日历提供程序

java - 批量添加多个联系人

javascript - 如何添加到 expo 托管项目的 build.gradle 中的默认配置?

Android App Crawler 不工作 -> 权限拒绝失败

android - 如何在 Android API 7 中实现 NumberPicker?

java - getWritableDatabase 不起作用

android - Flutter - 设备Android中的 map 空白

android - SecurityException,无法显式添加 : myPakcageName 类型的帐户