android – 使用Singleton设计模式正确打开关闭数据库

android – 使用Singleton设计模式正确打开关闭数据库,第1张

概述我正在创建一个与数据库进行大量交互的应用程序(读写 *** 作). 为了避免在每个请求中打开/关闭 *** 作,我创建了一个使用Singleton设计模式扩展SQLiteOpenHelper的类.这样,我确定只有一个SQLiteOpenHelper实例,并且在所有应用程序生命周期(而不仅仅是活动生命周期)中只有一个到数据库的连接. 我也读了一些关于ContentProvider的文章,但我不知道这是一个更好的方法 我正在创建一个与数据库进行大量交互的应用程序(读写 *** 作).

为了避免在每个请求中打开/关闭 *** 作,我创建了一个使用Singleton设计模式扩展sqliteOpenHelper的类.这样,我确定只有一个sqliteOpenHelper实例,并且在所有应用程序生命周期(而不仅仅是活动生命周期)中只有一个到数据库的连接.

我也读了一些关于ContentProvIDer的文章,但我不知道这是一个更好的方法.

所以,这是我的Singleton类的主要逻辑(onCreate和onUpgrade删除):

public final class Basesqlite extends sqliteOpenHelper {    private static Basesqlite mInstance = null;    private sqliteDatabase db = null;    public static Basesqlite getInstance(Context context) {        if (mInstance == null) {            mInstance = new Basesqlite(context.getApplicationContext(),DBname,DBVERSION);        }        return mInstance;    }    private Basesqlite(final Context context,final String name,final int version) {        super(context,name,null,version);        db = getWritableDatabase();    }    @OverrIDe    public synchronized voID close() {        if (mInstance != null)            db.close();    }    public Cursor getAllData() {        String buildsql = "SELECT * FROM mytable";        return db.rawquery(buildsql,null);    }}

所以,要访问我的数据库,我做了:

Basesqlite basesqlite = Basesqlite.getInstance(context);basesqlite.getAllData();

它现在工作完美.但我的问题是关于close()方法.我真的不知道什么时候打电话.实际上,我的数据库实例对于我的应用程序的每个ActivIEs都是一样的,所以我认为在onPause()方法中调用close()是一个坏主意,因为实例将会在( onStart()方法的下一个Activity.此外,我无法检测到我的应用程序的结束,即当屏幕上没有任何活动可见时.

有人可以给我一些关于这个问题的帮助吗?当数据库与ONE活动相关联时,我发现了一些答案,但对我的情况没有提供任何真正的提示.

解决方法 您完成写入数据库的任何时间都应该调用close.例如,当您插入数据时,您将有一个打开的连接到数据库,完成后应该关闭.

阅读是不同的.当您在手机上创建sqlite数据库时,数据是持久的.数据库存在,您创建的处理程序提供了访问该信息的便捷方式.读取数据库通常通过获取数据库的可读实例并使用Cursor来提取值来进行.在这种情况下,您完成后关闭光标,而不是数据库本身.

你是对的,你不应该在单独的活动的生命周期方法中关闭数据库连接.相反,如上所述,在执行该事务完成后,关闭在处理程序的方法中写入数据库的数据库连接.

总结

以上是内存溢出为你收集整理的android – 使用Singleton设计模式正确打开/关闭数据库全部内容,希望文章能够帮你解决android – 使用Singleton设计模式正确打开/关闭数据库所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1133651.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存