Тогда не беспокойтесь о его закрытии. "

я есть приложение, которое хранит некоторые данные в БД SQLite. Также я делаю большой запрос в моем приложении. У меня около 15 операций. И почти все используют БД для запроса данных. Но я открываю свою БД в каждом действии и закрываю ее в onDestroy {...} каждого действия.

Проблема в том, что onDestroy {...} может никогда не вызываться, и иногда мое приложение остается включенным в течение длительного времени, и я переключаюсь с активности на другое открытие во много раз для моей БД.

И иногда я получаю сообщения об ошибках, такие как: база данных слишком много раз открывается и никогда не закрывается.

Я бы попытался закрыть свою БД точно после того, как получу из нее свои данные и закрою ее ... перейдя к следующему занятию и снова открыв и т. Д. ..... Но проблема в том, что в некоторых действиях я возвращаюсь другие действия .... закрытие моей БД и возвращение к этой деятельности приведет к большому закрытию Силы.

Я хочу открыть мою базу данных в начале моего приложения и закрыть ее в конце, но я столкнулся с двумя проблемами:

1. Должен ли я сделать свой класс SQLiteOpenHelper одноэлементным? ... получить его экземпляр .. открыть его в моем первом действии, а затем в моих следующих действиях просто получить экземпляр моей БД, который уже открыт / ???

2. Где конец моего приложения? Как я должен знать, где конец моего приложения и где закрыть мою БД.

РЕДАКТИРОВАТЬ:

public class DBAdapter extends SQLiteOpenHelper {

    public DBAdapter(Context context) {
        super(context, DATABASE_NAME, null, 1);
        this.myContext = context;

    }


    public void openDataBase() throws SQLException {




        String myPath = DATABASE_PATH + DATABASE_NAME;
        db = SQLiteDatabase.openDatabase(myPath, null,
                SQLiteDatabase.OPEN_READWRITE);


    }

}

Это фрагмент кода из моего класса, который управляет моей базой данных. Чтобы создать этот синглтон, я должен использовать конструктор, например:

private DBAdapter()
{



//nothing in here

}

Но это не определено для SQLiteOpenHelper

РЕДАКТИРОВАТЬ ФИНАЛ: Вот как я сделал это в соответствии с советами zirael:

пакет com.Server_1;

импорт android.app.Application;

открытый класс MyApplication расширяет приложение {

private static DBAdapter db;

public void onCreate()
{

    db=new DBAdapter(getApplicationContext());
    db.createDatabase();
    db.openDataBase();
}

public static DBAdapter getDatabaseAdapter()
{
    return db;
}


}

В каждой деятельности, где мне нужно подключение к БД, я делаю это:

MyApplication myApplication = (MyApplication) this.getApplication ();

DBAdapter db = myApplication.getDatabaseAdapter ();

И наконец мой манифест выглядит так:

<application  android:icon="@drawable/icon"  
android:label="@string/app_name"
  android:name=".MyApplication" 
  android:debuggable="true">

Ответы на вопрос(5)

Ваш ответ на вопрос