正确实现异步Android SQLite数据库
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了正确实现异步Android SQLite数据库,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1586字,纯文字阅读大概需要3分钟。
内容图文
![正确实现异步Android SQLite数据库](/upload/InfoBanner/zyjiaocheng/899/8fec40ade53c450c8793b07fca58de7e.jpg)
我已经用Google搜索并找到了多种异步访问本地SQLite数据库的方法:
> AsyncTask
> CursorLoader(我已经将它用于查询以检索我的联系人信息,但我不确定这将如何转换为带有多个查询的SQLiteOpenHelper子类)
> ContentProvider – 不确定它是否过度,只需要从应用程序中获取数据库
什么是最佳做法?我目前有一个SQLiteOpenHelper子类,其中包含基本表创建/升级/等.逻辑.
解决方法:
CursorLoader仅支持查询.如果要在UI中显示数据,您可能仍希望使用它并利用Loader框架. CursorLoader旨在与ContentProvider一起使用,但您可以复制源代码并修改它以获取SQLiteDatabase而不是Context并在loadInBackground()方法中查询数据库而不是ContentResolver.
对于写入操作,您有几个选项需要考虑(这些选项不是互斥的,根据具体情况,您最终可能会使用多个选项):
> AsyncTask
>处理程序
> IntentService
> AsyncQueryHandler
> Java线程/执行程序框架
我通常使用AsyncTask进行一次性操作,这可能会产生轻微的UI影响(例如,在屏幕上显示和隐藏某些指示符).请注意,AsyncTasks在单个工作线程上串行运行,除非您将自己的Executor提供给execute().
IntentService非常有用,因为它将所有启动命令排队并在工作线程上串行执行,并在完成所有启动时自动关闭.它是一个服务,因此它与任何活动/ UI组件分开运行,但这也意味着有一些开销,因为它是一个需要由系统创建和启动的应用程序组件.我喜欢它们用于批量操作或将来某个时间安排的操作.
AsyncQueryHandler不仅仅是查询(不管它是如何命名的),但是像CursorLoader一样,它希望你与ContentProvider进行通信.您可以使用单个处理不同类型的操作.重要的是要注意ContentProvider本身不提供异步处理,你必须从后台线程调用它,这是AsyncQueryHandler所做的.
最后,好的旧Java线程和执行器框架工作得很好,尽管您可能希望有一些应用程序组件供它们运行(可能是一个服务,但如果是这样的话,你可能只是去上面的IntentService) ).
内容总结
以上是互联网集市为您收集整理的正确实现异步Android SQLite数据库全部内容,希望文章能够帮你解决正确实现异步Android SQLite数据库所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。