微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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上下文,因为这可能会导致内存泄漏.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐