У меня есть действие, в котором я открываю базу данных, вызывая конструктор 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(), который не вызывается в этом случае, поскольку я только нажимаю кнопку «Назад» (он должен вызвать при возобновлении ()). Я действительно смущен. Может ли кто-нибудь объяснить, что здесь происходит.
Изменить: вот как я реализовал dbHelper.close()
@Override
public synchronized void close() {
super.close();
}