Android 能否避免为内部使用的数据库实现ContentProvider的开销?

Android 能否避免为内部使用的数据库实现ContentProvider的开销?,android,android-loadermanager,android-database,android-loader,Android,Android Loadermanager,Android Database,Android Loader,各国: 如果您不打算,您不需要开发自己的提供商 与其他应用程序共享数据 因此,可以理解的是,如果我在应用程序中有一个完全本地使用的SQLite DB,那么就不需要ContentProvider(避免编写大量样板代码),但我没有得到在后台查询该DB的“Android”方法是什么?(尽可能减少重新发明车轮的开销) 这项任务似乎就是我们的目的,如: 加载器使异步加载活动或活动中的数据变得容易 碎片 但是,Loader没有子类可以执行此任务,最接近的子类被设计为与ContentResolver耦合。那么

各国:

如果您不打算,您不需要开发自己的提供商 与其他应用程序共享数据

因此,可以理解的是,如果我在应用程序中有一个完全本地使用的SQLite DB,那么就不需要ContentProvider(避免编写大量样板代码),但我没有得到在后台查询该DB的“Android”方法是什么?(尽可能减少重新发明车轮的开销)

这项任务似乎就是我们的目的,如:

加载器使异步加载活动或活动中的数据变得容易 碎片

但是,
Loader
没有子类可以执行此任务,最接近的子类被设计为与
ContentResolver
耦合。那么,我是不是遗漏了什么?是否有第三方的Loader实现可以做到这一点,或者是否有其他方法


谢谢

A
Loader
是一种与活动生命周期挂钩的机制,可用于异步加载任何类型的数据,无论是ContentProvider、network还是您只需要处理一组数字

在底部有一个名为的加载程序,
CursorLoader
实际从中继承。这可用于提供加载程序的基本级别功能。您所要做的就是实现一个 需要加载的数据模型,然后实现
AsyncTaskLoader#loadInBackground()
方法来获取它。在本例中,您将查询数据库,然后以您选择的形式返回结果。在这种情况下,您可能不希望返回
游标,但希望创建表示游标中的行的Pojo


作为一个快速实现,您可以从数据库中进行查询,而不是使用
ContentResolver

a
Loader
是一种与活动生命周期挂钩的机制,可用于异步加载任何类型的数据,无论是ContentProvider、网络、,或者你只需要处理一堆数字

在底部有一个名为的加载程序,
CursorLoader
实际从中继承。这可用于提供加载程序的基本级别功能。您所要做的就是实现一个 需要加载的数据模型,然后实现
AsyncTaskLoader#loadInBackground()
方法来获取它。在本例中,您将查询数据库,然后以您选择的形式返回结果。在这种情况下,您可能不希望返回
游标,但希望创建表示游标中的行的Pojo

作为一个快速实现,您可以从数据库中进行查询,而不是使用
ContentResolver

“安卓”在后台查询数据库的方式是什么

你要什么都行。使用
异步任务
。使用普通的
线程
。使用
IntentService
。查看您首选的ORM是否有异步选项,或者是否挂接到RxJava/RxAndroid或其他内容

瞧,没有单一的“安卓”方式

正如文档中所述,这个任务似乎就是装载机的任务:

Loader
仅在希望UI层相当直接地处理数据库的情况下才相关。您只能将
加载程序
活动
片段
一起使用

我错过什么了吗

欢迎您创建自己的
AsyncTaskLoader
子类,该子类直接与SQLite一起工作,也许可以使用
CursorLoader
的源代码作为灵感来源

是否有第三方的Loader实现可以做到这一点

我曾经有过一次。然而

“安卓”在后台查询数据库的方式是什么

你要什么都行。使用
异步任务
。使用普通的
线程
。使用
IntentService
。查看您首选的ORM是否有异步选项,或者是否挂接到RxJava/RxAndroid或其他内容

瞧,没有单一的“安卓”方式

正如文档中所述,这个任务似乎就是装载机的任务:

Loader
仅在希望UI层相当直接地处理数据库的情况下才相关。您只能将
加载程序
活动
片段
一起使用

我错过什么了吗

欢迎您创建自己的
AsyncTaskLoader
子类,该子类直接与SQLite一起工作,也许可以使用
CursorLoader
的源代码作为灵感来源

是否有第三方的Loader实现可以做到这一点


我曾经有过一次。但是,如果不需要,则不需要ContentProvider

  • 与其他流程(应用程序)共享数据

  • 构建应用程序小部件

  • 将您自己的搜索建议与Android快速搜索框集成

。。。而且,您不希望使用自动UI更新来同步和查询数据


实际上,您可以尝试在
AsyncTaskLoader
(尊重活动生命周期的AsyncTask)中包装读/写DB操作。此外,您还必须实现自己的观察者来更新视图(还有一个选项可供使用)。

如果不需要,则无需使用ContentProvider

  • 与其他流程(应用程序)共享数据

  • 构建应用程序小部件

  • 将您自己的搜索建议与Android快速搜索框集成

。。。而且,您不希望使用自动UI更新来同步和查询数据

实际上,您可以尝试在
AsyncTaskLoader
(尊重活动生命周期的AsyncTask)中包装读/写DB操作。此外,您还必须实现自己的观察者来更新视图(一个