当前位置: 首页 > news >正文

Caused by: java.lang.IllegalStateException

 今天在做 Room 迁移的时候,想测试Room 是否按预期工作,报上面错误:

检查发现 我报 它放在主线执行的使用报错了, 对数据库的操作由于是耗时操作,所以必须放在子线程中完成, 不允许在主线程上访问数据库,

Caused by: java.lang.IllegalStateException: Cannot access database on the main thread since it may potentially lock the UI for a long period of time.
java.lang.RuntimeException: Unable to start activity ComponentInfo{space.dua/com.fox.app.ui.local.AppActivity}: java.lang.IllegalStateException: Cannot access database on the main thread since it may potentially lock the UI for a long period of time.

/*** entities: 实体类* version: 数据库初始版本号* exportSchema: 是否允许数据库架构将导出到给定的文件夹中【 默认true 】* @Database(entities = [User::class], version = 1, exportSchema = false)*/
@Database(entities = [RuleBean::class, UserDate::class], version = 2)
abstract class BoxDatabase : RoomDatabase() {// 在类的主体内,声明一个返回 RuleDao 的抽象值。您可能有多个 DAO。abstract fun ruleDao(): RuleDao// TODO 定义一个 companion 对象。伴生对象允许客户端访问用于创建或获取数据库,而无需该类进行实例化的方法companion object {//TODO 提供一个Migration实例,指明迁移的版本号private val MIGRATION_1_2: Migration = object : Migration(1, 2) {override fun migrate(database: SupportSQLiteDatabase) {// Migration code here, if neededdatabase.execSQL("alter table Book add column chuban text");}}//TODO Room.databaseBuilder()中传入上下文、数据库类,以及数据库的名称@SuppressLint("StaticFieldLeak")val instance = Room.databaseBuilder(ContextHolder.get(), BoxDatabase::class.java, "boxConfig").addMigrations(MIGRATION_1_2) .build()}}

相关文章:

  • docker安装Mysql5.7版本
  • Visual Studio怎么用?
  • MySql每天从0开始生成特定规则自增编号
  • Llama模型家族之RLAIF 基于 AI 反馈的强化学习(六) RLAIF 代码实战
  • 开源大模型源代码
  • chap5 CNN
  • 使用 Vue 3 和 vue-print-nb 插件实现复杂申请表的打印
  • 大宋咨询(深圳车主满意度调查)如何开展汽车展会观众满意度问卷调查
  • JVM思维导图
  • java配置文件解析yml/xml/properties文件
  • 成绩发布小程序哪个好用?
  • 【Word】调整列表符号与后续文本的间距
  • 【Linux】常见命令:fping的介绍和用法举例
  • 线程思维导图
  • 【JS重点知识02】栈、堆与数据类型 关系
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • EOS是什么
  • ES学习笔记(12)--Symbol
  • Java多态
  • java多线程
  • jquery ajax学习笔记
  • ng6--错误信息小结(持续更新)
  • SpringCloud集成分布式事务LCN (一)
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • 百度地图API标注+时间轴组件
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 给Prometheus造假数据的方法
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 那些被忽略的 JavaScript 数组方法细节
  • 盘点那些不知名却常用的 Git 操作
  • 悄悄地说一个bug
  • 物联网链路协议
  • 一些css基础学习笔记
  • 原生 js 实现移动端 Touch 滑动反弹
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • ​MPV,汽车产品里一个特殊品类的进化过程
  • ​queue --- 一个同步的队列类​
  • # 数论-逆元
  • (ZT)薛涌:谈贫说富
  • (苍穹外卖)day03菜品管理
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (一)u-boot-nand.bin的下载
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .Net core 6.0 升8.0
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)
  • .Net下的签名与混淆
  • .NET性能优化(文摘)
  • .stream().map与.stream().flatMap的使用
  • @RequestParam,@RequestBody和@PathVariable 区别
  • @Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成
  • [2021]Zookeeper getAcl命令未授权访问漏洞概述与解决
  • [Android]如何调试Native memory crash issue