Android Studio 0.4.4
您好,
我在main_activity类中有onCreate:
DBHelper dbHelper;
SQLiteDatabase db = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dbHelper = new DBHelper(this);
/* Database hasn't been created yet, if already created and opened ignore */
if(db == null) {
db = dbHelper.getWritableDatabase();
Log.d(TAG, "onCreated() Create database for the first time");
}
}
我有调用onCreate,onUpdate等的dbHelper类。但是,由于我的应用程序将使用纵向和横向,每次用户切换它时都会调用onCreate方法。我不想每次都要继续创建相同的数据库。我尝试检查null,但这不起作用。
我无法在清单文件(android:configChanges)中禁用调用onCreate,因为每次用户切换时,我都会在此方法中使用savedInstanceState。
非常感谢任何建议,
public class DBHelper extends SQLiteOpenHelper {
static final String DB_NAME = "friends.db";
static final int DB_VERSION = 1;
static final String TABLE = "friends";
static final String C_ID = BaseColumns._ID;
static final String C_NAME = "name";
static final String C_PHONE = "phone";
static final String C_EMAIL = "email";
private final String TAG = "DBHELPER";
// Constructor
public DBHelper(Context _context) {
super(_context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "create table " + TABLE + "(" + C_ID + " int primary key, "
+ C_NAME + " text, "
+ C_PHONE + " text, "
+ C_EMAIL + " text)";
db.execSQL(sql);
Log.d(TAG, "onCreate sql: " + sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
String sql = "drop table if exists " + TABLE;
// Drop old database if it exists
db.execSQL(sql);
// Create a new database
Log.d(TAG, "onUpgrade() sql: " + sql);
onCreate(db);
}
}