我有一個活動,我通過調用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();
}
在DBHelper類的close()方法中,您是否正確地關閉了數據庫?請打印close()方法。你是如何在清單中聲明你的第一個活動的額外選項? like launchMode ... – Rick
@Rabgs:用close方法更新了問題。 – Sush
您應該調用DBHelpber close方法中的SQLiteDatabase close方法。這裏的示例http://code.google.com/p/android-notes/source/browse/trunk/src/com/bitsetters/android/notes/DBHelper.java?r=10 – Rick