new DbCreate(context) **只會建立輔助物件**,**不會**觸發 onCreate()。資料庫實際建立發生在**首次呼叫 getReadableDatabase() 或 getWritableDatabase() 時**。
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// 啟動時預先觸發建立/升級,避免首次查詢卡頓
new DbCreate(this).getWritableDatabase();
}
}
並在 AndroidManifest.xml 註冊 android:name=".MyApplication"。
decimal 在 SQLite 中非標準類型,建議用 REAL 或 INTEGER(存分為單位)。_user integer primary key 應為 _id INTEGER PRIMARY KEY AUTOINCREMENT 以符合 Android 慣例。Room、AsyncTask 或協程移至背景執行緒。Activity 而非 Application Context 可能導致記憶體洩漏。Google 官方推薦 Room:編譯期驗證 SQL、LiveData/Flow 觀察、自動遷移、協程整合,徹底解決上述痛點。