Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.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 是否应通过ContentProviders公开所有数据?_Android_Android Contentprovider - Fatal编程技术网

Android 是否应通过ContentProviders公开所有数据?

Android 是否应通过ContentProviders公开所有数据?,android,android-contentprovider,Android,Android Contentprovider,所以我主要来自网络背景,我正在努力学习android应用程序的架构。试图正确理解内容提供商 我认为我理解的是,内容提供商几乎是活动/服务和数据(DAO)之间的中间人。我还认为,内容提供商还可以提供其他应用程序访问您的数据(几乎像web服务一样?) 我没有真正了解的是,如果您不需要将这些数据公开给其他应用程序,该怎么办?我需要为内容提供者和所有uri定义等而烦恼吗?如果没有,这个有名字吗。。。图案(或缺乏)还是我最好只使用ContentProviders并接受向其他应用程序公开这些数据的额外好处

所以我主要来自网络背景,我正在努力学习android应用程序的架构。试图正确理解内容提供商

我认为我理解的是,内容提供商几乎是活动/服务和数据(DAO)之间的中间人。我还认为,内容提供商还可以提供其他应用程序访问您的数据(几乎像web服务一样?)

我没有真正了解的是,如果您不需要将这些数据公开给其他应用程序,该怎么办?我需要为内容提供者和所有uri定义等而烦恼吗?如果没有,这个有名字吗。。。图案(或缺乏)还是我最好只使用ContentProviders并接受向其他应用程序公开这些数据的额外好处

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


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

如说明书所述,如您所述:

内容提供商存储和检索数据,并使所有应用程序都可以访问数据。它们是跨应用程序共享数据的唯一方式;没有所有Android软件包都可以访问的公共存储区域

因此,如果您存储的数据不应该被其他应用程序访问,那么就没有必要使用
ContentProviders
。正如您在上所看到的,有几种存储数据的方法


我的意见是,在您的情况下,对于REST服务的使用,以及不与其他应用程序共享的数据,您应该使用
SQLiteDatabase
。你可以找到一个很好的例子。

虽然它说内容提供商很乐意分享内容,但他们也免费给你一些其他东西

关于内容提供商,最好的事情是系统为您处理线程问题:)当我将我的应用程序移植到蜂巢时,我遇到了很多数据库错误(请注意,姜饼中以前不存在的错误),我没有正确处理对不同线程的访问


我很快在我的数据库上放了一个内容提供商,然后。。在这方面永远不要回头看,一旦你设置了内容提供商,它看起来就容易多了。整个应用程序其余部分的代码都非常好,你不必担心并发性

我认为线程问题是谷歌IO推出的主要诱人功能。您知道是否仍然可以使用ContentProviders,但在利用线程优势的同时保持它们的私有性?或者有其他模式可以实现这一点吗?是的,您可以简单地设置publish=“false”或清单中的某些内容:)