gpt4 book ai didi

android - 私有(private)内容提供者有什么用?

转载 作者:IT王子 更新时间:2023-10-28 23:54:32 26 4
gpt4 key购买 nike

Android Dev Guide

Content providers are also useful for reading and writing data that is private to your application and not shared.

通常,Content Providers 用于向不同的应用程序提供数据或在它们之间共享数据。我想知道拥有私有(private)提供商并且不想分享它是否有任何用处。如果直接访问数据库或文件系统没有提供任何好处吗?

谢谢,拉贾特

最佳答案

  1. 它会在后台线程中自动安排您的所有服务器端和同步数据库访问。但是,在您的应用程序前端,Content Resolver/Provider 通常会默认从 UI 线程执行查询/事务。您必须异步执行所有事务(即使用 CursorLoader)以确保您的应用程序在 UI 端顺利运行
  2. 它本地化来自通过 ContentProvider 访问的任何线程的可重入 DB 访问,因此所有锁定都可以完全在 ContentProvider 覆盖调用中发生,而不是在 DB 层中跟踪它,一个服务和一个 UI 层。
  3. 作为上述的一部分,它还为您的数据提供了一个不错的单例接口(interface)——如果您的应用中有十个 Activity 类,您只需从每个类中调用 ContentResolver 静态调用,而不是需要处理打开/关闭当您在应用中从一个 Activity 跳转到另一个 Activity 时,每个 Activity 中都有一个 SQLiteDatabase。
  4. ContentProvider 与 SyncAdapter 模型紧密相关——这意味着如果您想使您的数据库与网络上的服务器托管数据库保持同步,这几乎是唯一的方法。 (您的应用反射(reflect)了 REST api 类型的情况)
  5. 它与 ContentResolver 的 ContentObserver 接口(interface)相关联——这是一个接口(interface),其中(在许多其他有用的东西中) View 可以注册为观察一组特定的数据(通过光标到该数据)。然后,如果您对 ContentProvider 进行更改,CP 可以通知 CR,CR 可以反过来通知任何相关的游标,这反过来将重新查询并导致 View 更新。这比手动跟踪 View 要干净得多,这样您就可以使它们无效并重绘它们。

至于数据库的重入锁定,它并没有完全做到这一点,但它有帮助——你的 ContentProvider 类实现了四个简单的函数(CRUD 接口(interface)),如果你选择覆盖它,第五个,batchAdd () -- 这会本地化您的锁定。最简单的答案是在函数级别简单地标记所有四个/五个函数声明“同步”,你就完成了。比试图找出在 5 个不同的 Activity 中访问您的数据库的 20 个地方的锁定要干净得多。

关于android - 私有(private)内容提供者有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5523511/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com