【问题标题】:How to handle DB.close when background thread is processing data to database?后台线程处理数据到数据库时如何处理 DB.close?
【发布时间】:2014-07-12 22:10:03
【问题描述】:

我得到了一个

java.lang.IllegalStateException Cannot perform this operation because the connection pool has been closed.

因为我的应用程序从服务器获取信息并在background thread 中对其进行处理,该background thread 将内容写入我的SQLite database

我在关闭应用程序时收到此错误,但仍有一个后台线程正在运行,试图写入已关闭的数据库。

解决这个问题的最佳方法是什么?

【问题讨论】:

  • 暂停后台线程?

标签: java android multithreading sqlite android-sqlite


【解决方案1】:

对我来说解决这个问题的最佳方法是什么?

不要在关闭数据库的任何地方关闭它。要么找一个更好的时间关闭它(当你知道什么都不再需要它时),或者干脆不关闭它。

【讨论】:

  • 谢谢!我假设系统会在所有功能完成后自动关闭它?
  • @TheNomad:不是真的。数据库将保持打开状态,直到您的进程终止。这并不罕见,不会造成任何特别的伤害。 SQLite 是事务性的,因此当您执行实际的数据库 I/O 时,所有内容都会写入磁盘。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多