簡體   English   中英

在Android啟動畫面中創建數據庫

[英]Create database in Android splash-screen

我的應用程序中有一個初始屏幕,試圖檢查數據庫表是否存在,如果不存在,請創建應用程序所需的表。 我的想法是進行2次檢查,如下所示:

if(db.exists){
increase the progressbar to the 100%
(If we could add a short pause to the progress bar transition better, just 
for a better user experience)}

else{
increase the progress bar to 50% and create databases. By last increase 
progress bar to 100%}

start -> main_activity

這只是我的想法,但我不知道如何制作和引用AppSQLiteHelper.java的方法。 如果您有更好的想法可以更好地改進代碼邏輯。 這是到目前為止編寫的代碼:

SplashScreenActivity.java:

public class SplashScreenActivity extends Activity {

// Set the duration of the splash screen
public ProgressBar splash_screenProgressBar;
public int MAX_VALUE = 30;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Set portrait orientation
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    setContentView(R.layout.splash_screen);

    splash_screenProgressBar = (ProgressBar) findViewById(R.id.splash_screenProgressBar);
    splash_screenProgressBar.setMax(MAX_VALUE);

    new CountDownTimer(3000, 100) {

        int progreso = 1; // Variable que va a ir aumentando del progreso
        @Override
        public void onTick(long millisUntilFinished) {
            splash_screenProgressBar.setProgress(progreso);
            progreso += (1);
        }

        @Override
        public void onFinish() {
            splash_screenProgressBar.setProgress(MAX_VALUE);

            // Start the next activity
            Intent mainIntent = new Intent().setClass(SplashScreenActivity.this, MainActivity.class);
            startActivity(mainIntent);

            // Close the activity so the user won't able to go back this activity pressing Back button
            finish();
        }
    }.start();
}

}

AppSQLiteHelper.java:

public class AppSQLiteHelper extends SQLiteOpenHelper{

String sqlCreateCartera = "CREATE TABLE CARTERA (saldo INTEGER)";
String sqlCreateValor = "CREATE TABLE VALOR (cantidad INTEGER, precio_accion INTEGER, entidad TEXT)";
String sqlCreateEstado = "CREATE TABLE ESTADO (estado BOOLEAN)";

public AppSQLiteHelper(Context contexto, String nombre,
                            CursorFactory factory, int version) {
    super(contexto, nombre, factory, version);
}

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL(sqlCreateCartera);
    db.execSQL(sqlCreateValor);
    db.execSQL(sqlCreateEstado);
}

@Override
public void onUpgrade(SQLiteDatabase db, int versionAnterior, int versionNueva) {
    db.execSQL("DROP TABLE IF EXISTS CARTERA");
    db.execSQL("DROP TABLE IF EXISTS VALOR");
    db.execSQL("DROP TABLE IF EXISTS ESTADO");

    db.execSQL(sqlCreateCartera);
    db.execSQL(sqlCreateValor);
    db.execSQL(sqlCreateEstado);
}

}

為什么要檢查數據庫是否存在,因為一旦創建AppSQLiteHelper對象,它就會自動調用onCreate()的重寫函數來初始化數據庫,而不必顯式檢查數據庫是否存在。如果確實有上述條件,您仍然確實想這樣做,那么您可以創建一個回調接口並在您的幫助器類中實現,在oncreate執行之后,您可以檢查其是否在下面創建了db.Like。

public interface OnDBInitializeListener {
    public void onCreateCalled(int position);
}

並在將其傳遞給構造函數時調用幫助程序類時使用此方法。希望有幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM