我正在创建一个与数据库进行大量交互的应用程序(读写操作).
为了避免在每个请求中打开/关闭操作,我创建了一个使用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活动相关联时,我发现了一些答案,但对我的情况没有提供任何真正的提示.
解决方法
原文地址:https://www.jb51.cc/android/313089.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。