【问题标题】:Closing a Database in onPause()在 onPause() 中关闭数据库
【发布时间】:2012-03-06 15:47:35
【问题描述】:

在活动暂停时关闭数据库是最佳做法吗?或者不管活动的状态如何,让数据库保持打开状态是否安全?

很想知道,因为如果我在 onPause() 中关闭我的数据库 然后尝试在 onResume() 中重新打开它,它会抛出一个空指针异常并说试图从一个已经关闭的游标中重新查询数据库。 . .

【问题讨论】:

    标签: android database sqlite onpause


    【解决方案1】:

    onDestroy() 中关闭它是最好的方法。

    【讨论】:

    • 好的,所以如果我让 onPause() 保持打开状态就可以了,除非它当然是用 onDestroy() 调用的?
    • 没错。当 Activity 在后台时调用 onPause()。在 Activity 消失之前调用 onDestroy()。所以在onDestroy() 结束后,下次显示Activity 时,必须再次调用onCreate()。
    【解决方案2】:

    我从不关闭我的数据库,而是在我的自定义 Application 类实现的 onCreate 中打开它。

    有一个onTerminate 方法,但文档说它永远不会被执行,所以没有真正的方法来确定应用程序何时终止。

    never close database 模式我从未遇到任何问题。

    【讨论】:

      【解决方案3】:

      你能发布错误吗?我通常在 onPause 方法中关闭数据库并在 onResume 中打开它。因为我读过 onDestroy 并不总是被调用。但在你的情况下,我认为问题在于未关闭的光标。但我不确定这就是我要求您发布 logcat 和您的代码的原因。

      【讨论】:

      • 这里是关于onDestroy的讨论stackoverflow.com/questions/8667019/…
      • 请编辑您的帖子并在您的问题中插入一个错误。对其他用户来说会更好。
      • 是的,这是错误 03-06 10:40:01.931: E/AndroidRuntime(895): java.lang.RuntimeException: Unable to resume activity {com.test.learnandroid/com.test. learnandroid.EditActivity}: java.lang.NullPointerException
      • 将所有 logcat 作为您问题的一部分发布。
      猜你喜欢
      • 2011-05-31
      • 1970-01-01
      • 2012-03-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-12
      • 2011-01-14
      • 2015-11-26
      • 1970-01-01
      相关资源
      最近更新 更多