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

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

2016-07-18 14:18:17 1834 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
相关问答

1

回答

Kubernetes 的声明式 API是什么样的?

2022-05-09 14:35:58 135浏览量 回答数 1

1

回答

调度框架认为 Kubernetes 中目前存在哪两个循环?

2021-12-09 14:21:32 160浏览量 回答数 1

1

回答

ASK 对 Kubernetes 容器生态提供了完善的支持,目前客户使用 ASK 来支撑哪些场景?

2021-12-06 09:45:30 209浏览量 回答数 1

1

回答

flink on native kubernetes作业cpu实际使用量与请求量相差太大问题

2021-12-02 16:56:04 295浏览量 回答数 1

1

回答

在Kubernetes中,在对Istio地域进行配置时,不需要配置的字段是什么呀?

2021-11-18 19:24:24 146浏览量 回答数 1

1

回答

在Kubernetes中,在对Istio地域进行配置时,不需要配置的字段是什么呀?

2021-11-18 16:32:26 145浏览量 回答数 1

1

回答

MySQL-Database Question?

2021-10-16 16:42:18 197浏览量 回答数 1

1

回答

Kubernetes 搭建节点网络框架有哪些操作

2021-01-11 15:05:17 598浏览量 回答数 1

1

回答

实体框架6,Update-Database -verbose命令未构造正确的文件路径来保存我的mdf

2020-01-03 11:00:10 263浏览量 回答数 1

1

回答

Docker Desktop上的Kubernetes持久性卷(Windows)

2019-01-11 11:32:16 1761浏览量 回答数 1
+关注
文章
问答
问答排行榜
最热
最新
相关电子书
更多
OPEN SOURCE IN A DATA-DRIVEN WORLD
立即下载
ST+AliOS > Smart IoT !
立即下载
使命必达—钉钉企业级消息服务的机遇与挑战
立即下载