Android SQLite交互最佳实践

时间:2015-12-11 08:37:19

标签: android sqlite

在UI线程上进行SQLite交互是否可以? 在服务(AsyncTaskIntentService)中嵌入与SQLite的交互是最佳做法,还是应该CursorLoader使用SQLite

1)如果我使用IntentService返回用户定义对象的列表,那我该怎么做呢。我们是否应该使用BroadcastReciever并将对象列表作为ArrayListParcelable对象放入intent中,并将其发送回UI线程。

2)如果我必须使用游标加载器,那么我需要为SQLite编写自定义加载程序,方法是扩展AsyncTaskLoader并覆盖doInBackGround方法,添加所需的代码。

请建议我哪个更好的方法,因为我是Android的新手,如果有人有共享代码

2 个答案:

答案 0 :(得分:1)

在UI线程上使用SQLite是完全可以的。除非您打算滚动浏览大量数据,否则无需添加所有服务和备用内容。

答案 1 :(得分:0)

虽然您可以在UI线程上访问数据库&直接更新视图。 人们应该避免这种做法。在辅助线程上进行数据库访问,即使用工作线程使用asynctasks / services,即使操作时间少于5秒。你总是可以在android中使用非UI到UI线程通信机制,一旦线程完成它的工作就更新视图。

请参阅此链接以了解有关非UI到UI线程通信机制的基础知识。 http://www.intertech.com/Blog/android-non-ui-to-ui-thread-communications-part-1-of-5/

我通常使用在活动/服务上创建的AsyncTasks进行数据库访问 如果android稍后决定禁止在UI线程上进行数据库访问,那么如果数据库访问已经在非UI线程上,则代码将不需要返工。

android有历史记录,早先在UI线程上允许网络访问,但现在如果你设置targetSDKversion = 11,那么应用程序将抛出NetworkOnMainThreadException&出口。 因此,最好在非UI线程上进行数据库访问。