因此,在经历了许多其他类似的问题后,我决定在我需要的所有活动中,通过应用程序使用我的SqlLiteDataHandler的一个实例。
我是这样做的:当闪屏加载时,我创建了一个SqlLiteDataHandler的公共静态实例。
然后我在任何地方都使用这个处理程序,尽管我从不关闭它或将它设为空,因为我知道一旦应用程序关闭,它就会失去它的引用。
但这个问题仍然存在。当我多次尝试退出和进入应用程序时,仍然会遇到数据库锁定问题。(因此,需要多次浏览闪屏。)
我哪里错了?
我的实例创建就像这样简单:
DbStaticClass.sqlDataHandler = new LinkDataHandler(SplashScreen.this);我在整个应用程序中都使用DbStaticClass.sqlDataHandler。
发布于 2013-09-06 00:55:02
您不应该从闪屏创建您的LinkDataHandler,因为有多个不涉及您的闪屏或多次调用它的执行路径,例如:
由于内存不足,
Activity。Service,则虽然后一种情况在应用程序中可能不是这样,但您不能转义第一种情况;您创建了多个sqlDataHandlers,因此打开了多个到数据库的连接,这可能会由于多种原因而发生冲突。
要基于应用程序上下文正确实现单例,请使用Application类及其onCreate as explained in another answer。
这个答案是基于假设的:
仅在
DbStaticClass.sqlDataHandler的onCreate方法中初始化SplashScreen.LinkDataHandler外部的Activity access DbStaticClass.sqlDataHandler创建数据库处理程序内容。https://stackoverflow.com/questions/18639848
复制相似问题