У меня есть активность, где я открываю базу данных, вызывая конструктор SQLiteOpenHelper.Жизненный цикл работы и путаница базы данных
dbHelper = new DBHelper(this); //DBHelper class extends SQLiteOpenHelper
Затем, нажав кнопку, я открываю другое действие и закрываю dbHelper.
int cuisineId = HelperUtils.getCuisineIdByName(dbHelper,cuisine);
SingletonGlobalClass.getInstance().setCuisineId(cuisineId);
String restaurantNameSearchStr = restaurantName.getText().toString().trim();
Intent intent = new Intent();
intent.setComponent(new ComponentName("ctnxa.android", ctnxa.android.SearchResultActivity"));
intent.putExtra("searchStr", restaurantNameSearchStr);
intent.putExtra("option", R.string.restaurant);
startActivity(intent);
dbHelper.close();
Теперь, когда я нажимаю кнопку «Назад», он возвращается к этой операции. Когда я пытаюсь снова нажать кнопку поиска, он использует dbHelper и работает, как правило, без ошибок. Мое ожидание заключается в том, что он не должен работать, поскольку dbHelper уже закрыт раньше, и его можно восстановить только при вызове метода onCreate(), который не будет вызван в этом случае, поскольку я только нажимаю кнопку (он должен вызывать onResume()). Я действительно смущен. Может ли какой-нибудь орган объяснить, что здесь происходит.
Edit: Это, как я не реализовали dbHelper.close()
@Override
public synchronized void close() {
super.close();
}
в методе close() для класса DBHelper вы правильно закрываете базу данных? Распечатайте метод close(). И как вы объявили свою первую активность в манифесте дополнительными опциями? like launchMode ... – Rick
@ Rabgs: Обновлен вопрос с помощью метода close. – Sush
Вы должны вызвать метод закрытия SQLiteDatabase в методе закрытия базы данных DBHelpber. Пример здесь http://code.google.com/p/android-notes/source/browse/trunk/src/com/bitsetters/android/notes/DBHelper.java?r=10 – Rick