【发布时间】:2011-12-25 20:06:31
【问题描述】:
我有一个活动,我通过调用 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() 方法。你是如何在清单中声明你的第一个 Activity 任何额外选项的?像launchMode ...
-
@Rabgs:使用 close 方法更新问题。
-
您应该在 DBHelpber 关闭方法中调用 SQLiteDatabase 关闭方法。这里的例子code.google.com/p/android-notes/source/browse/trunk/src/com/…
-
根据开发人员文档 SQLiteOpenHelper.close() 应该关闭任何打开的数据库对象。所以对 dbHelper.close() 的调用应该关闭任何打开的数据库对象。
标签: android android-activity sqliteopenhelper