安装应用程序时只运行一段代码

Chi*_*oni 27 android android-preferences sharedpreferences

我想在我的应用程序中只运行一段代码,并且是第一次运行它时(新安装的应用程序).我怎么能这样做,任何人都可以解释给出一段代码.

实际上,在我的android项目中,我想创建数据库并在第一次运行时插入一些值.之后,该特定代码不应该再次运行.如何通过SharedPreferencesPreferences实现此机制.

示例代码将更有帮助.

pep*_*kin 39

在此之前,您可以使用SQLiteOpenHelper.这是用数据库做事的首选方式.该类有一个onCreate(SQLiteDatabase)方法,在首次创建数据库时调用.我觉得它很适合你.

如果您想要更多的灵活性并且第一次逻辑不仅仅与数据库绑定,您可以使用前面提供的示例.你只需要把它放在启动点.

有2个启动点.如果您只有单个活动,则可以将代码放入onCreate方法中,因此它将如下所示:

public void onCreate(Bundle savedInstanceState) {
  // don't forget to call super method.
  super.onCreate(savedInstanceState);

  SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
  if (!prefs.getBoolean("firstTime", false)) {
    // <---- run your one time code here
    databaseSetup();

    // mark first time has ran.
    SharedPreferences.Editor editor = prefs.edit();
    editor.putBoolean("firstTime", true);
    editor.commit();
  }
}
Run Code Online (Sandbox Code Playgroud)

不要忘记在清单中放置活动声明,以及它的intentfilters(action = MAIN,category = LAUNCHER).

如果您有多个活动并且您不想复制启动逻辑,则可以将初始化逻辑放在Application实例中,该实例是在所有活动(以及其他组件,如服务,广播接收器,内容提供者)之前创建的. .

只需创建类:

public class App extends Application {

  @Override
  public void onCreate() {
    super.onCreate();

    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
    if (!prefs.getBoolean("firstTime", false)) {
      // <---- run your one time code here
      databaseSetup();

      // mark first time has ran.
      SharedPreferences.Editor editor = prefs.edit();
      editor.putBoolean("firstTime", true);
      editor.commit();
    }
}
Run Code Online (Sandbox Code Playgroud)

所有你需要的工作,都放在applicationAndroidManifest.xml属性android:name =".app"的标签中.

<!-- other xml stuff -->

<application ... android:name=".App">

   <!-- yet another stuff like nextline -->
   <activity ... />
</application>
Run Code Online (Sandbox Code Playgroud)


San*_*lik 14

你可以尝试:

SharedPreferences wmbPreference = PreferenceManager.getDefaultSharedPreferences(this);
boolean isFirstRun = wmbPreference.getBoolean("FIRSTRUN", true);
if (isFirstRun)
{
    // Code to run once
    SharedPreferences.Editor editor = wmbPreference.edit();
    editor.putBoolean("FIRSTRUN", false);
    editor.commit();
}
Run Code Online (Sandbox Code Playgroud)

在创建的第一个活动中写下这个.然后代码将不再执行.


Anu*_*kur 6

无论您需要在应用程序中的何处运行此代码:

  1. 检查firstTime共享首选项中的布尔值是否为 True
  2. 如果不

    • 运行一次性代码
    • firstTime在共享首选项中另存为 true

像这样的东西:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
if(!prefs.getBoolean("firstTime", false)) {
    // run your one time code here
    SharedPreferences.Editor editor = prefs.edit();
    editor.putBoolean("firstTime", true);
    editor.commit();
}
Run Code Online (Sandbox Code Playgroud)


Dri*_*uar 5

在这些情况下,我要做的是:

    wmbPreference = PreferenceManager.getDefaultSharedPreferences(this);


    isFirstRun = wmbPreference.getBoolean("FIRSTRUN", true);

    if (isFirstRun)
    {

        // Do your magic here

        SharedPreferences.Editor editor = wmbPreference.edit();
        editor.putBoolean("FIRSTRUN", false);
        editor.commit();
    }else{
        //what you do everytime goes here 
    }
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助