Я пытаюсь лучше понять класс SQLiteOpenHelper и как и когда вызываются onCreate и onUpgrade.
Моя проблема в том, что каждый раз, когда я закрываю и запускаю свое приложение (технически это фактически каждый раз, когда я создаю новый экземпляр MyDB), вызывается onCreate, и все данные из предыдущего использования эффективно стираются ... WTF ???
Сначала я решил эту проблему, создав одноэлементную MyDBFactory, в которой я создал один экземпляр MyDB. Это позволило сохранять данные как минимум во время работы приложения.
Мне бы хотелось, чтобы схема базы данных и данные были постоянными!
У меня в основном есть:
public class MyDB extends SQLiteOpenHelper{
private static int VERSION = 1;
...
public ContactControlDB(Context context) {
super(context, null, null, VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
try {
db.execSQL(DATABASE_CREATE);
db.execSQL(INSERT_DATA);
} catch (SQLException ex) {
ex.printStackTrace();
}
}
и:
public class MyDBFactory{
private static MyDB db;
public static MyDB getInstance(Context context) {
if(db == null) {
db = new MyDB (context);
}
return db;
}
}
Я хотел бы знать, почему onCreate вызывается каждый раз, когда у меня появляется «новый MyDB (контекст)», и куда моя база данных обращается каждый раз, когда выходит мое приложение.
Если у вас есть какие-то подходящие ссылки или знания, которые могли бы мне немного помочь, я был бы очень признателен!