gpt4 book ai didi

本地 SQLite 数据库的 Android 内容提供程序 : why?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:29:54 27 4
gpt4 key购买 nike

我是 Android 开发的新手,但我无法全神贯注于内容提供者,特别是为单一应用程序、单一数据库 SQLite 数据源创建内容提供者的好处(如果有的话)。我可以看到,如果我想使用 Sync Adapter,我需要一个 Content Provider,但老实说,Sync API 太平庸了,我认为与使用 REST 滚动我自己的远程同步过程相比没有任何优势。

我还看到,通过在我的 SQLite 数据库上实现一个内容提供程序,我得到了一个有保证的 Android 管理的单例,但我使用的是 AndroidAnnotations,它可以为我进行单例管理,但从我的经验来看,这似乎不是读到,只要我正确管理打开的连接,甚至有必要推荐使用单例数据库助手。

我错过了什么吗?对于单个数据库应用程序,Content Provider API 似乎出奇地低级且容易出错。特别是“手动”管理 URI 映射并引入那个奇怪的抽象层似乎并没有增加太多值(value)。

那么本地 SQLite 数据库的 Content Provider 是否有值(value)?如果是这样,是否有一些框架可以为我生成我的 URI 映射,或者它是否完全由您自己推出?

最佳答案

首先,Sync API 所做的不仅仅是从您的服务器加载数据。它控制您的同步更新与整个系统中其他应用程序同步的批处理,确保运行前的连接性,并优化整个系统的电池生命周期(如 running Sync Adapters periodicallytransferring data using sync adapters guide 中所述)。

其次,使用 Content Provider 可以让您非常轻松地利用 Loaders框架(也可在支持库中找到)和 CursorLoader这允许您的 UI 随着 Content Provider 中的数据更改而自动更新。这可以大大减少整个 Activity 所需的样板文件数量。

如果 Content Provider 本身的样板是一个问题,那么您当然可以使用 Annotation 框架,例如 ProviGen为您自动生成绝大多数 Content Provider。

Android 中还有一些功能只能在内容提供者的帮助下完成,包括custom search suggestions并将应用私有(private)文件共享给其他应用(尽管扩展 ContentProvider 的辅助类 FileProvider 是您需要的大部分内容)。

UI 测试可以变得更加容易,您也可以使用提供的 MockContentProvider模拟特定的数据集而无需更改您的 Activity 代码(当然假设它只从 Content Provider 加载数据)。

关于本地 SQLite 数据库的 Android 内容提供程序 : why?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19261934/

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