我有一个活动,我通过调用 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();
}