我想在Android中的PlayStore中更新我的应用程序时清除缓存吗?

Raj*_*har 6

我有一些数据存储在偏好中.如果在PlayStore中发现任何更新.我需要监听更新操作并且必须清除myapp的缓存.

Yas*_*svi 2

要了解您的应用程序是否已更新:

将当前版本代码存储在共享首选项中,然后在主活动中使用以下函数。

public static AppStart checkAppStart(Context context, SharedPreferences sharedPreferences) {
    PackageInfo pInfo;
    AppStart appStart = AppStart.NORMAL;
    try {
        pInfo = context.getPackageManager().getPackageInfo(
                context.getPackageName(), PackageManager.COMPONENT_ENABLED_STATE_DEFAULT);
        int lastVersionCode = sharedPreferences.getInt(
                Constants.LAST_APP_VERSION, -1);

        int currentVersionCode = pInfo.versionCode;
        appStart = checkAppStart(currentVersionCode, lastVersionCode);

        // Update version in preferences
        sharedPreferences.edit()
                .putInt(Constants.LAST_APP_VERSION, currentVersionCode).commit(); // must use commit here or app may not update prefs in time and app will loop into walkthrough
    } catch (PackageManager.NameNotFoundException e) {
        Log.w(LOG_TAG,
                "Unable to determine current app version from package manager. Defensively assuming normal app start.");
    }
    return appStart;
}

private static AppStart checkAppStart(int currentVersionCode, int lastVersionCode) {
    if (lastVersionCode == -1) {
        return AppStart.FIRST_TIME;
    } else if (lastVersionCode < currentVersionCode) {
        return AppStart.FIRST_TIME_VERSION;
    } else if (lastVersionCode > currentVersionCode) {
        Log.w(LOG_TAG, "Current version code (" + currentVersionCode
                + ") is less then the one recognized on last startup ("
                + lastVersionCode
                + "). Defensively assuming normal app start.");
        return AppStart.NORMAL;
    } else {
        return AppStart.NORMAL;
    }
}
Run Code Online (Sandbox Code Playgroud)

AppStart 只是一个枚举:

public enum AppStart {
    FIRST_TIME,
    FIRST_TIME_VERSION,
    NORMAL
}
Run Code Online (Sandbox Code Playgroud)

之后,清除缓存: /sf/answers/1673604691/