2012-03-12 67 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();`