【问题标题】:Flexible In-App update installed while app is in background应用在后台时安装灵活的应用内更新
【发布时间】:2019-07-11 14:06:38
【问题描述】:

我正在使用 Android Play 核心库的新功能 In-App Updates。 所以文档说,对于灵活的应用内更新,我需要一个InstallStateUpdatedListener,它会在后台下载更新时进行监听,然后我们需要向用户显示一个 UI,或者在我的情况下是一个 Snackbar,描述用户现在需要安装已经下载的更新。当我一直在前台时这工作正常,但是当我在下载应用内更新之前进入后台然后在一段时间后返回应用程序的前台时,我的应用程序会自动更新而不显示用户要求他们安装更新的任何 UI。根据文档,理想情况下不应该发生这种情况。

我尝试删除所有类型的侦听器,注释掉完成更新的代码,但无济于事。

appUpdateManager = AppUpdateManagerFactory.create(getAppContext());
if (appUpdateInfo.updateAvailability() != UpdateAvailability.UPDATE_AVAILABLE && appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.FLEXIBLE)) {
    final InstallStateUpdatedListener listener =
            new InstallStateUpdatedListener() {
                @Override
                public void onStateUpdate(InstallState installState) {
                    if (installState.installStatus() ==
                            InstallStatus.DOWNLOADED) {
                        showUpdateCompletedSnackbar();
                    }
                }
            };
    appUpdateManager.registerListener(listener);
    try {
        Log.d("BaseApp","Starting Flexible in app update");
        appUpdateManager.startUpdateFlowForResult(
                appUpdateInfo,
                AppUpdateType.FLEXIBLE,
                getActivity(),
                2000);
    } catch (IntentSender.SendIntentException exception) {
        Log.e("BaseApp",exception);
    }
}

private static void showUpdateCompletedSnackbar() {
    Snackbar snackbar =
            Snackbar.make(getContainer(),
                    appContext.getString(R.string.in_app_update_snackbar_text),
                    Snackbar.LENGTH_INDEFINITE);
    snackbar.setAction("INSTALL", new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            appUpdateManager.completeUpdate();
        }
    });
    snackbar.setActionTextColor(
            ContextCompat.getColor(getAppContext(), R.color.blue));
    snackbar.show();
}

【问题讨论】:

    标签: android in-app-update


    【解决方案1】:

    好的,实际上文档并不清楚这一点,但灵活应用内更新中的一个警告是,一旦您开始下载应用内更新并继续使用该应用,更新将在后台,然后会通过 UI 通知用户更新已下载,我们需要安装更新(此 UI 显示和所有将由开发人员处理)。

    但我遇到的第二种情况是,如果在下载更新之前,我将我的应用程序移至后台会怎样。在这种情况下,如果在应用程序处于后台时下载更新,那么它也会安装更新而不通知用户到新版本,然后当您将应用程序带到前台时,您将看到更新后的应用程序, 而不是任何 UI。

    灵活更新仅用于此目的,如果用户正在使用该应用程序,则更新将在后台下载,而用户无需关闭应用程序并进行更新,而将他们正在做的工作留在应用程序,然后发布下载更新,用户可以选择在需要时或在他们完成应用中正在进行的工作时使用显示给他们的 UI 来最终安装更新。

    应用中有更多注意事项,这篇中篇文章将有助于大家了解更多边缘案例https://proandroiddev.com/android-in-app-updates-common-pitfalls-and-some-good-patterns-9024988bbbe8

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-17
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-20
      相关资源
      最近更新 更多