2012-03-12 47 views
3

安裝後第一次運行應用程序時,需要創建數據庫表。那麼如何在安裝應用程序時第一次運行應用程序的狀態?我聽說過SharedPreferences但不熟悉它。任何代碼的幫助表示讚賞,並提前感謝...Android:單獨開始第一次應用程序時執行任務嗎?

+1

這不是一個有效的問題!在您調用SQLiteDatabase實例後,Android將自動創建SQLlite數據庫! – daigoor 2012-03-12 11:02:02

+0

@daigoor:一旦安裝了應用程序,那麼如何在第一次安裝時創建並在數據庫表中插入值? – 2012-03-12 11:40:28

+0

確定安裝應用程序後,您需要打開它!只需插入任何你想要的值,Android操作系統將爲你處理數據庫的創建,不需要你自己創建它!嘗試搜索有關使用SQLite數據庫的更多資源 – daigoor 2012-03-12 12:09:54

回答

3

SQLiteOpenHelper有一個onCreate方法,如果數據庫不存在,並需要第一次創建,它會被調用。

使用它可以用表中需要的任何數據創建和初始化數據庫。

+0

如果您只需在第一次運行時創建數據庫,則這是正確的答案。但是如果你需要像下載一樣的其他「首次運行檢查」,你應該考慮SharedPreferences作爲OP說 – 2012-03-12 11:15:43

+0

但我必須插入值到數據庫表中,當應用程序第一次運行後單獨安裝... – 2012-03-12 11:45:16

+0

@Raman -Mystry使用onCreate方法,您可以執行任何您想要的查詢。首先創建表格,然後用數據填充表格。 – zaf 2012-03-12 12:50:15

1

,如果你試圖插入在應用程序的數據庫中的值第一次運行,你可以把一個價值在sharedPref這樣的:

private static void SaveBooleanPreferences(String key, boolean value, Context context){ 
     SharedPreferences sharedPreferences = context.getSharedPreferences(PREFS_NAME,0); 
     SharedPreferences.Editor editor = sharedPreferences.edit(); 
     editor.putBoolean(key, value); 
     editor.commit(); 

    } 
    private static boolean getBooleanPreferences(String key, Context context){ 
     SharedPreferences sharedPreferences = context.getSharedPreferences(PREFS_NAME,0); 
     return sharedPreferences.getBoolean(key, false); 

    } 

您檢測在第一次運行的值之後嘗試插入進入數據庫,Android操作系統將爲您創建數據庫,無需自己創建數據庫!

+0

+1爲好答案。我已經用下面的代碼實際解決了這個問題...我非常感謝你。 – 2012-03-12 13:01:28

+0

@拉曼 - 邁特里:這是你的正確答案嗎? – daigoor 2012-03-13 14:38:50

1

我參照下面的代碼解決:

SharedPreferences prefs = getSharedPreferences("MyPreferences", Context.MODE_PRIVATE); 
boolean haveWeShownPreferences = prefs.getBoolean("HaveShownPrefs", false); 

if (!haveWeShownPreferences) 
{ 
    // launch the preferences activity 

} 
else 
{ 
    // we have already shown the preferences activity before 
} 

SharedPreferences prefs1 = getSharedPreferences("MyPreferences", Context.MODE_PRIVATE); 
SharedPreferences.Editor ed = prefs1.edit(); 
ed.putBoolean("HaveShownPrefs", true); 
ed.commit();` 
相關問題