Android 私人内容提供商的用途是什么?
机器人说 内容提供商也有助于 读取和写入数据,即 对您的应用程序是私有的,而不是 共享 通常,内容提供商用于向不同的应用程序提供数据或在它们之间共享数据。我想知道有私人供应商而不想分享有什么用。是否提供了直接访问数据库或文件系统所不能提供的任何好处 谢谢, 拉贾斯Android 私人内容提供商的用途是什么?,android,data-storage,android-contentprovider,Android,Data Storage,Android Contentprovider,机器人说 内容提供商也有助于 读取和写入数据,即 对您的应用程序是私有的,而不是 共享 通常,内容提供商用于向不同的应用程序提供数据或在它们之间共享数据。我想知道有私人供应商而不想分享有什么用。是否提供了直接访问数据库或文件系统所不能提供的任何好处 谢谢, 拉贾斯 它会在后台线程中自动安排所有服务器端和同步数据库访问。但是,在应用程序前端,默认情况下,内容解析器/提供者通常会从UI线程执行查询/事务。必须异步执行所有事务(即使用游标加载程序),以确保应用程序在UI端平稳运行 它将通过Conten
游标加载程序
),以确保应用程序在UI端平稳运行ContentProvider
访问的任何线程的可重入数据库访问本地化,这样所有锁定都可以完全在ContentProvider覆盖调用中发生,而不是在数据库层、服务层和UI层中跟踪它至于DB的重入式锁定,它并不能完全做到这一点,但它有帮助——您的ContentProvider类实现了四个简单函数(CRUD接口),如果您选择覆盖它,第五个函数batchAdd()——这将本地化您的锁定。简单的答案是在函数级别将所有四/五个函数声明标记为“synchronized”,就完成了。比试图在5个不同的活动中锁定20个访问数据库的位置要干净得多。例如,在两个进程之间的多进程应用程序使用场景(如:音乐播放服务通常在远程进程中运行),在一个应用程序共享数据库中应使用私有ContentProvider。,感谢你抽出时间把它们列出来。这是非常有用的信息。大多数点是有效的,但它真的帮助你处理线程(第一点)?您仍然需要将对contentprovider的访问转移到另一个线程。@JanBerkel:嗯,它或多或少会为您“自动”处理它。ContentProvider/Query/Cursor/ContentObserver模型对您隐藏了数据库访问的实际线程。在编程上,您永远不必考虑启动线程或担心锁定或等待线程完成。所以我想我的观点是,它将背景线程的基本细节抽象到一个看起来或多或少是单线程的界面中。@嗯,如果你不做任何特殊的事情,任何来自主线程的内容提供者访问仍然会停留在主线程上,没有自动调度。你的两个权利-它是处理线程和内容提供者的asycn行为的游标加载程序。来自“异步查询:您应该在单独的线程中执行查询。一种方法是使用游标加载程序对象。加载程序指南中的示例演示了如何执行此操作。”