当前位置:首页 > 数据库 > SQlite

android – 如果我使用的是singelton,那么关闭SQLiteOpenHelper的位置

我有以下类允许用户获取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)!