在Android应用更新时执行代码

时间:2014-03-01 20:19:55

标签: android

在我的Android应用程序中,我有一些共享首选项,其中一个不应该在我的下一个版本中使用。但是,它的值应该用于另一个共享首选项。我可能只是懒惰并忽略它,但用户必须在更新后进行一些设置才能使应用程序正常工作。所以我想在更新应用程序期间执行此操作,换句话说,从共享首选项中获取现有值并将其放入新的共享首选项中,这应该仅在更新后执行一次。

这就是我的想法,但我不知道这是不是最好的做法:

public class UpgradeHandler extends Application {

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

        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);

        if (prefs.getBoolean("firstTime", true)) {
            // Make my shared preferences data migration
            // Other stuff to be done once after upgrade

            // Store to shared prefs that first time has passed
            SharedPreferences.Editor editor = prefs.edit();
            editor.putBoolean("firstTime", false);
            editor.commit();
        }
    }
}

我知道处理更新操作的机制可以放在扩展Activity的常规类中,但是对于我的应用程序而言,这个共享首选项处理是在更新后完成的,因为应该更新的共享首选项可能是在安装应用程序的任何时候在BroadcastReceiver中使用。如果我已经正确理解了这一点,那么在任何活动,广播接收者,服务等之前总是会调用扩展Application及其onCreate方法的类。在我的情况下,在这样的类中进行更新处理应确保我的首选项处理始终在更新之后但在调用任何活动或广播接收器之前执行。它是否正确? 我的另一个问题是,如果我寻求这样的解决方案,那么将共享首选项变量命名为firstTime是否正确,我的意思是我不能在我的应用程序更新时使用它,如果我需要运行一次,firstTime则为false 。在某些模式(例如firstTime_version

)中命名用于此的共享首选项不是更好的做法

我希望您理解我的问题,在底部我只想知道在应用程序更新后需要执行的代码的最佳处理。

谢谢!

0 个答案:

没有答案