安卓开发时,多线程操作数据库有什么问题吗?

安卓在主线程操作数据库,会在执行动画的时候出现卡顿,所以想异步操作数据库,有什么线程问题吗?

阅读 6.7k
3 个回答

老生常谈的原子锁问题。。
我不太清楚安卓带的这个sqlite会不会自带锁,或者是直接抛出异常。
你可以实现一个数据操作队列,或者自己实现锁的机制,就可以了。

多线程操作数据库没有问题,一般本地数据库数据较多的时候也是推荐在子线程中运行的,以免卡顿界面。当然诸如上面的回答,多线程操作数据库时如果同时处理同一张表的话会抛出异常,不会进行锁定的,需要自行实现锁的机制。另外题主如果在数据量不太多就出现了卡顿的现象的话建议优化数据库工具,或者使用一些类似GreenDAO之类工具提高运行效率。

可以这么实现的,如果你的程序中使用了网络接口,那可以把数据库也看成一种缓慢数据交换的方式。具体的操作和界面的展示,都可以仿照网络请求来。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题