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())。私は本当に混乱しています。ここで何が起こっているのか、どんな体でも説明できますか?
編集:これは私がdbHelper.close()を実装した方法です
@Override
public synchronized void close() {
super.close();
}