我有以下类允许用户获取SQLiteOpenHelper对象
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();
}
}
我想知道我应该在哪里关闭这个单例对象我不能在onTerminate()方法中继,因为它不会被调用.我想在用户退出我的应用时关闭它?任何解决方案
解决方法:
因为Android中没有这样的“app is closed”事件.您必须处理每个Activity的数据库连接,这样您才能知道Activity何时被销毁,或者您必须以某种方式关注哪个对象使用数据库帮助程序,并且只有当其他对象不再使用帮助程序时才关闭帮助程序.
如果您继续使用单例解决方案,请注意将Application上下文传递给getDBHelper()方法而不是Activity上下文,因为这可能会导致内存泄漏.
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!