在Android设备上安装应用程序后,仅运行一次代码

时间:2011-08-15 13:21:38

标签: android

我只想在安装应用程序后运行一段代码。执行完后,即使是升级,也不应再次调用该特定代码。

5 个答案:

答案 0 :(得分:38)

  1. 检查共享首选项中布尔X是否为True
  2. 如果不是:
    一个。运行特殊代码
    湾在共享首选项中将x保存为true
  3. 例如:

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

答案 1 :(得分:4)

我过去曾使用共享首选项,但如果你想在安装时做一些事情,你也可以查看安装接收器。 MyInstallReciever实现BroadcastReciever

<receiver
    android:name="com.MyInstallReciever"
    android:exported="true">
    <intent-filter>
        <action
            android:name="com.android.vending.INSTALL_REFERRER" />
    </intent-filter>
</receiver>

答案 2 :(得分:0)

使用这个简单的代码

   if (getPreferences(MODE_PRIVATE).getBoolean("is_first_run", true)) {
        /*
         * your code here
         */
        getPreferences(MODE_PRIVATE).edit().putBoolean("is_first_run", false).commit();
    }

答案 3 :(得分:0)

使用布尔值检查是否是第一次执行代码。

SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = sharedpreferences.edit();
if(sharedpreferences.getBoolean("is_first_exec",false))
    {
        editor.putBoolean("is_first_exec",false);
        //your code here ...
    }

getBoolean()与SharedPreference的其他所有get方法一样,都采用第二个默认参数,该参数将在第一次时返回null(因为SharedPreference文件中没有任何内容)。因此,if(){...}块中的代码将仅执行一次。

脚注:SharedPreferences

答案 4 :(得分:0)

Thread t = new Thread(new Runnable() {
    @Override
    public void run() {
        //  Initialize SharedPreferences
        SharedPreferences getPrefs = PreferenceManager
                .getDefaultSharedPreferences(getBaseContext());

        //  Create a new boolean and preference and set it to true
        boolean isFirstStart = getPrefs.getBoolean("firstStart", true);

        //  If the activity has never started before...
        if (isFirstStart) {

            //  Launch app intro
            final Intent i = new Intent(MainActivity.this, DefaultIntro.class);

            runOnUiThread(new Runnable() {
              @Override public void run() {
                startActivity(i);
              }
            });

            //  Make a new preferences editor
            SharedPreferences.Editor e = getPrefs.edit();

            //  Edit preference to make it false because we don't want this to run again
            e.putBoolean("firstStart", false);

            //  Apply changes
            e.apply();
        }
    }
});

// Start the thread
t.start();