【发布时间】:2014-10-27 09:34:43
【问题描述】:
我浏览了许多在 Android 中使用 SQLite 的示例/教程。假设您有一个使用 SQLite 的应用程序,ContentProvider、CursorLoader、自定义 CursorAdapter。
现在,我发现的所有主要示例都依赖于CursorLoader 来获取数据到CursorAdapter,这在CursorLoader 的性质下以异步-UI 线程安全的方式发生。但是,这些相同的示例都通过主线程上的ContentResolver 进行插入/删除/更新调用(例如,来自onClick、onResume、onPause)。 (Example) 他们不会将这些调用包装在AsyncTask 中,也不会启动单独的线程或使用AsyncQueryHandler。
为什么会这样,这么多写得很好的博客/例子怎么会犯这么明显的错误?还是简单的单行插入/删除/更新调用如此之快以至于它们足够安全以从主/ UI 线程启动?进行这些快速调用的正确方法是什么?
【问题讨论】:
-
你的最后一句话可能是对的:查询操作肯定比单个插入/更新/删除复杂得多
标签: android sqlite sql-insert android-contentresolver ui-thread