使用singleton类在活动之间共享数据库实例?

时间:2011-06-04 11:36:51

标签: android database singleton

喂!我想使用单例类,因为如果我打开数据库的每个活动,我会得到“泄漏发现”(这是因为我打开数据库,即使它已经打开)。我创建了一个单例类,但我不知道应该如何使用它。

这是我的班级:

package com.ShoppingList;

import com.ShoppingList.databases.DbAdapter;

public class DbManager {

    DbAdapter db;

    // singleton
    private static DbManager instance = null;

    private DbManager() {

    }

    public static DbManager getInstance() {
        if (instance == null)
            instance = new DbManager();
        return instance;
    }

    public void setinstance(DbAdapter db){
        this.db=db;
    }

    public DbAdapter getinstancedb(){
        return db;
    }
}

在我提出的第一项活动中:

db = new DbAdapter(this);
        db.open();
        DbManager.getInstance().setinstance(db);

以及下一个活动:DbManager.getInstance()。getinstancedb();但是第二次活动让我关闭了。

任何人都可以帮我怎么用吗?感谢...

3 个答案:

答案 0 :(得分:1)

您可以扩展Application类并在其中创建DbAdapter的实例。这样,它将由您的所有活动共享。

答案 1 :(得分:0)

因为db具有与第一个活动相同的上下文和生命周期。将您的方法公之于众,让他们完成返回所需结果所需的所有设置/拆卸。

答案 2 :(得分:0)

关于泄漏警告。您是否在onDestroy()中关闭了数据库管理员连接?