android - 所有数据都应该通过 ContentProviders 公开吗?

标签 android android-contentprovider

所以我主要来自网络背景,我正在尝试学习 Android 应用程序的架构。试图掌握对内容提供者的正确理解。

我想我的理解是,内容提供者几乎是 Activity/服务和数据(DAO 之类)之间的中间人。我还认为内容提供者也会向其他应用程序提供对您的数据的访问(几乎像 Web 服务?)

我没有真正理解的是,如果您不需要将这些数据暴露给其他应用程序怎么办?我是否需要为内容提供者和所有 uri 定义等而烦恼?如果没有,是否有此...模式的名称? (或缺乏)或者我最好只使用 ContentProviders 并接受将此数据公开给其他应用程序的额外好处?

我知道最终我会想要在应用程序和外部数据库之间同步数据。我看到一个 google IO presentation 支持使用内容提供者进行 RESTful 通信的模式。但就目前而言,我只是想熟悉基本的静态数据。然后希望一旦我得到它就将它换成来自 REST 服务的数据。

希望我没有完全离开这里。谢谢。

最佳答案

虽然它说内容提供商非常适合分享内容,但他们还免费为您提供其他一些东西!

关于内容提供者的最好的事情是系统为你处理线程问题 :) 当我将我的应用程序移植到 Honeycomb 时我遇到了很多数据库错误(请注意那些以前在 Gingerbread 中不存在的错误)我是' 正确处理不同线程上的访问。

我很快在我的数据库上放置了一个内容提供者,好吧..在这方面从来没有回头,一旦你设置了你的内容提供者,应用程序其余部分的代码就更好了,你不用担心并发问题

关于android - 所有数据都应该通过 ContentProviders 公开吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7790528/

相关文章:

android - android 如何找出隐式 Intent 的 URI 的 MIME 类型?

android - 使用 Intent.ACTION_PICK 读取电话号码和地址

android - 如何在多个应用程序的库中运行单例(共享)服务?

android - 无法使用 Gmail 共享 Assets 中的图像

javascript - 在 Android 网页中禁用缩放输入焦点

android - 如何在 build.gradle 中指定 admob 库?

android - 是否可以在不使用内容提供程序的情况下访问另一个 APK 中的资源?

android - Android 中的单个内容提供者还是多个内容提供者?

java - 我无法测试Android Wear sdk

android - Android Studio 是用于 Android 应用程序开发的 "official"IDE 是什么意思?