关闭SQLiteOpenHelper我有下面的类,允许用户得到一个SQLiteOpenHelper
对象其中,如果我使用的是singelton一个
import android.content.Context;
public class DBUtils {
private DBUtils(){
}
private static DBHelper dbHelper ;
public static synchronized DBHelper getDBHelper(Context context){
if(dbHelper == null){
dbHelper = new DBHelper(context, ApplicationMetaData.DATABASE_NAME, null, ApplicationMetaData.DATABASE_VERSION);
}
return dbHelper;
}
public static synchronized void closeDBHelper(){
if(dbHelper!=null)
dbHelper.close();
dbHelper = null;
}
@Override
protected Object clone() throws CloneNotSupportedException {
// TODO Auto-generated method stub
throw new CloneNotSupportedException();
}
}
我想知道我应该在哪里close
这个单独的对象,我不能因为它不会被调用,所以在onTerminate()
方法上继电器。我想在用户退出我的应用程序时关闭它?任何解决方案
或者,在getDBHelper的构造函数()始终调用'context.getApplicationContext()' - 这是不是依靠总是通过应用程序上下文安全。另外,对于单例模式,您通常不会关闭SQLiteOpenHelper,就像您在编写ContentProvider时不关闭它一样。 – Jens 2012-04-29 10:40:02
当然,我将应用程序上下文传递给getDBHelper(),你的意思是我应该关闭助手,如果没有人通过调用close来使用它?好主意,如何使DBHelper引用计数器是每一个调用getDBHelper()我会增加计数器,每一个关闭我递减一,并检查它的零调用是否关闭 – user4o01 2012-04-29 10:40:40
是的引用计数器将完成这项工作。 – Flo 2012-04-29 10:49:33