Использование синглтон-класса для обмена экземплярами базы данных между действиями - PullRequest
0 голосов
/ 04 июня 2011

Эй! Я хочу использовать одноэлементный класс, потому что, если я открываю базу данных при каждом действии, я получаю «Утечка найдена» (это происходит потому, что я открываю базу данных, даже если она уже открыта). Я создаю одноэлементный класс, но я не знаю, как мне его использовать.

Вот мой класс:

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 ]

1 голос
/ 04 июня 2011

Вы можете расширить Application класс и создать там экземпляр DbAdapter. Таким образом, он будет использоваться всеми вашими действиями.

0 голосов
/ 04 июня 2011

относительно предупреждения об утечке. Вы закрываете соединение с менеджером БД в onDestroy()?

0 голосов
/ 04 июня 2011

Потому что db имеет тот же контекст и жизненный цикл, что и ваша первая деятельность.Сделайте ваши методы общедоступными и заставьте их выполнить все настройки / демонтажи, необходимые для получения желаемого результата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...