關閉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