首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理Android中的数据库锁定错误?

问如何处理Android中的数据库锁定错误?
EN

Stack Overflow用户
提问于 2013-09-05 23:04:22
回答 1查看 168关注 0票数 0

因此,在经历了许多其他类似的问题后,我决定在我需要的所有活动中,通过应用程序使用我的SqlLiteDataHandler的一个实例。

我是这样做的:当闪屏加载时,我创建了一个SqlLiteDataHandler的公共静态实例。

然后我在任何地方都使用这个处理程序,尽管我从不关闭它或将它设为空,因为我知道一旦应用程序关闭,它就会失去它的引用。

但这个问题仍然存在。当我多次尝试退出和进入应用程序时,仍然会遇到数据库锁定问题。(因此,需要多次浏览闪屏。)

我哪里错了?

我的实例创建就像这样简单:

代码语言:javascript
复制
DbStaticClass.sqlDataHandler = new LinkDataHandler(SplashScreen.this);

我在整个应用程序中都使用DbStaticClass.sqlDataHandler。

EN

回答 1

Stack Overflow用户

发布于 2013-09-06 00:55:02

您不应该从闪屏创建您的LinkDataHandler,因为有多个不涉及您的闪屏或多次调用它的执行路径,例如:

由于内存不足,

  • Android会在后台杀死您的应用程序,并在用户返回时仅重新创建可见的Activity。
  • 如果您的应用程序在没有进入闪屏的情况下启动了Service,则
  • 如果用户再次通过闪屏进入您的应用程序,可能会导致应用程序无法重新启动,从而导致多次执行。

虽然后一种情况在应用程序中可能不是这样,但您不能转义第一种情况;您创建了多个sqlDataHandlers,因此打开了多个到数据库的连接,这可能会由于多种原因而发生冲突。

要基于应用程序上下文正确实现单例,请使用Application类及其onCreate as explained in another answer。

这个答案是基于假设的:

仅在

  • DbStaticClass.sqlDataHandler的onCreate方法中初始化SplashScreen.
  • LinkDataHandler外部的Activity access DbStaticClass.sqlDataHandler创建数据库处理程序内容。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18639848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档