先描述下我的应用场景:
IM项目,某个聊天中,每发送一条消息就存储或更新该条消息为本聊天的最后一条聊天记录。这里的数据库操作我放在ExecutorService并设置为单一线程池。大部分情况下是没有问题的,但是再低内存手机中,频繁发送消息偶尔会出现update方法一直卡在这里(前面log有输出,后面的log不输出也没有抛出异常),因此导致了线程阻塞,请问下为什么update会卡住
System.out.println(recordModel.getFromPath());
mDbUtils.update(recordModel, wb, "content", "sessionTime", "noReadCount", "msgType", "name", "lastModifyTime", "fromPath");
}
Log.d("zxl", "单线程执行结束");
} catch (DbException e) {
Log.d("zxl", "单线程执行结束,但抛出了异常");
e.printStackTrace();
}
有可能是数据库文件被锁或者存储没有响应,具体要跟踪到update内才知道了。