实施数据库框架的“Android方式”是什么?
这两个目标:
这是我从这里收集的以及Android文档:
但是,创建,更新和删除数据呢?据我所知,LoaderManager仅用于查询。我应该使用AsyncQueryHandler吗?
更新: AsyncQueryHandler不了解配置更改。我已经读过碎片可能是要走的路。或者......我必须确保我的AsyncQueryHandler实现处理配置更改。
答案 0 :(得分:1)
(1)非常简单:只需在ContentProvider和实现所有低级CRUD的数据之间添加一个额外的类。例如,一个类可以处理sqlite数据库,另一个具有相同接口的类可以处理Google驱动器后端。
在做了一些研究后,以下是如何使用Android类处理(2)和(3):
加载器旨在加载数据,但您可以破解加载器以处理插入/更新。 (您可以在loadInBackground()方法中执行任何操作。)
问题是,在HoneyComb之前,所有Loaders共享一个线程池以并行执行请求。 (在HoneyComb之后,Loaders按顺序执行任务。)这意味着不仅在彼此之后立即执行的任务不能保证按顺序执行,而且如果不能正确处理多线程,则会出现数据一致性问题。
如果您在后台运行了一个更新数据库的服务,您仍然需要担心后蜂窝中的多线程。
最重要的是,似乎没有Android框架抽象出“数据库调用不应该相互冲突”的问题。你必须自己处理。