Android:APP版本升级后不显示Splash引导画面

2015年10月26日 Android 3条评论 阅读2347次

  在常规APP设计中,Splash引导画面一般是APP安装后第一次启动展现给用户的。

  在是否显示的控制上,个人来说一般用Sharepreference保存一个是否启动过的key-value,以后在启动APP的时候,以后取key对应的value就可以了。

  但新版本的APP安装后,因为我们保存了用户之前的数据,也就是Sharepreference中保存的APP是否启动过的key-value也还是存在的。这种情况下,新版本的Splash引导画面就不会被显示出来了。

  

  基于上述背景,我们就要对新版本的Sharepreference保存用的key重新修改,也就是重新换个新的key,以后就用这个新的key来取value做判断。

  上面说到的每次发布新版本重新修改key的方式虽然可行,但修改代码无疑带来了每次版本升级的麻烦。

  因为是版本升级时出现的问题,所以我考虑到可以使用APP的版本号作为key的一部分,这样就省去了每次版本升级都要修改代码的问题。

  下面是参考代码:

    public static void setAPPStartedToSP(Context context) {
        SharedPreferences sp = PreferenceManager
                .getDefaultSharedPreferences(context);
        SharedPreferences.Editor editor = sp.edit();
        String currVersion = getVersionName(context);
        editor.putBoolean(APP_START_KEY + currVersion, true);
        editor.commit();
    }
    public static boolean hasAPPStarted(Context context) {
        SharedPreferences sp = PreferenceManager
                .getDefaultSharedPreferences(context);
        String currVersion = getVersionName(context);
        return sp.getBoolean(APP_START_KEY + currVersion, false);
    }


    private static String getVersionName(Context context) {
        // getPackageName() returns current package name, 0:version info
        PackageManager packageManager = context.getPackageManager();
        PackageInfo packInfo;
        try {
            packInfo = packageManager.getPackageInfo(context.getPackageName(),
                    0);
            return packInfo.versionName;
        } catch (NameNotFoundException e) {
            e.printStackTrace();
            return "";
        }
    }


这样在SplashActivity中调用hasAPPStarted()判断即可。

文末,有问题欢迎指正,有更好的方法欢迎提出。

分享本文至:

WRITTEN BY

avatar
本文标签:versionupsplash
看了本文是不是觉得很赞,那就赶紧点击下面按钮分享给身边的朋友吧!

3 条评论

  1. avatar 中山婚纱摄影

    支持

  2. avatar 就爱秒杀网

    请求关注,给意见

  3. avatar 自由职业

    加油,看好你哦。

欢迎留言




用户登录

sitemap