我从未见过有人从另一个方法内部显式调用其中一个系统回调方法,例如 onCreate() 或 onDestroy()。它只是看起来不对。我以为我在一些例子中看到了这一点,我不敢相信。是我的想象还是真的?
在下面的 SQLiteOpenHelper 类的 onUpgrade() 方法的代码中,我从另一个函数显式调用 onCreate() 方法。是否可以从该方法内部调用 onCreate() ?有没有更好的方法可以在不调用 onCreate() 的情况下做到这一点?
private static class DatabaseHelper extends SQLiteOpenHelper{
DatabaseHelper(Context context){
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_NAME + " (" + LentItems.NOTE_ID + "ID INTEGER PRIMARY KEY AUTOINCREMENT, " +
LentItems.TITLE + " TEXT, " + LentItems.TEXT + " TEXT);");
}
@Override
public void onUpgrade(SQLiteDatabase db, int previousVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db); // <-- EXPLICIT CALL TO ONCREATE
}
} // end DatabaseHelper inner class