getReadableDatabase()不能在ui线程进行?-问答-阿里云开发者社区-阿里云

开发者社区> a123456678> 正文

getReadableDatabase()不能在ui线程进行?

2016-07-18 14:18:17 1472 1

以前我一贯的写法是getReadableDatabase()和getWritableDatabase() 都是在ui线程进行的,而且在android4.0以上版本都没有任何问题,最近换了个android2.2的设备测试,发现就报错了,异常是SQLiteException 并提示database is locked这些信息,检查我对数据库的操作只不过是写完数据后读数据,应该不存在数据库被锁的问题。
思前想后,在SQLiteOpenHelper 源代码中发现到getReadableDatabase()的如何注解
/*

  • Create and/or open a database. This will be the same object returned by
  • {@link #getWritableDatabase} unless some problem, such as a full disk,
  • requires the database to be opened read-only. In that case, a read-only
  • database object will be returned. If the problem is fixed, a future call
  • to {@link #getWritableDatabase} may succeed, in which case the read-only
  • database object will be closed and the read/write object will be returned
  • in the future.
    **

    Like {@link #getWritableDatabase}, this method may

    • take a long time to return, so you should not call it from the
    • application main thread, including from
    • {@link android.content.ContentProvider#onCreate ContentProvider.onCreate()}.*
    • @throws SQLiteException if the database cannot be opened
    • @return a database object valid until {@link #getWritableDatabase}
    • or {@link #close} is called.
      */

留意高亮部分,注解说不要写在应用的主线程,包括contentprovider的oncreate方法,我好奇的是 网上大家都是直接写在ui线程,而且看上去是可行的 为什么官方的api注解却提示不可以。还有一个奇怪的问题,就是我说过的遇到的那个异常并不是必定的,是偶尔出现的
so 说下你们的见解吧

取消 提交回答
全部回答(1)
  • a123456678
    2019-07-17 19:57:50

    android的设计就是,不让任何耗时的操作阻塞UI线程……
    所有操作DB和网络请求的操作,尽量另起线程。
    在以前的版本中,貌似要求不是那么严格。但是现在android对这个要求很严格…………

    我的理解,本身android的效率已经被IOS甩在后面了,所以我们做开发的就不要在给android找不愉快了。把耗时操另起线程,是一个良好的习惯……

    0 0
相关问答

10

回答

【精品问答合集】Hbase热门问答

hbase小能手 2019-05-29 14:37:26 120246浏览量 回答数 10

17

回答

【大咖问答】对话PostgreSQL 中国社区发起人之一,阿里云数据库高级专家 德哥

阿里ACE 彭飞 2019-07-10 09:36:10 969149浏览量 回答数 17

145

回答

【新手入门】云服务器linux使用手册

fanyue88888 2012-11-26 17:14:18 157088浏览量 回答数 145

8

回答

OceanBase 使用动画(持续更新)

mq4096 2019-02-20 17:16:36 333880浏览量 回答数 8

22

回答

爬虫数据管理【问答合集】

我是管理员 2018-08-10 16:37:41 146786浏览量 回答数 22

3

回答

请问postgres实时同步数据到mysql数据库有什么好的方案吗?

toni3 2019-06-29 14:55:43 115798浏览量 回答数 3

2

回答

mySQL数据库报错You have an error in your SQL syntax

落地花开啦 2016-02-14 16:09:24 126529浏览量 回答数 2

38

回答

安全组详解,新手必看教程

我的中国 2017-11-30 15:23:46 256874浏览量 回答数 38

82

回答

OSS入门教程

belle.zhoux 2014-07-07 17:14:27 149396浏览量 回答数 82

21

回答

请教一下数据量有100万条左右要什么配置?

易网网络 2013-03-27 15:18:02 192341浏览量 回答数 21
+关注
0
文章
14879
问答
推荐问答
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载