Гибкое обновление в приложении установлено, когда приложение находится в фоновом режиме - PullRequest
0 голосов
/ 11 июля 2019

Я использую новую функцию Android Play Core Library In-App Updates.Итак, в документации сказано, что для гибкого обновления в приложении мне нужен InstallStateUpdatedListener, который будет прослушивать, когда обновление загружается в фоновом режиме, а затем нам нужно показать пользовательский интерфейс или, в моем случае, Snackbar пользователю,описывая, что пользователю теперь нужно установить уже загруженное обновление.Это прекрасно работает, когда я нахожусь на переднем плане все время, но когда я перехожу на фон перед загрузкой обновления в приложении и через некоторое время возвращаюсь на передний план приложения, мое приложение автоматически обновляется, не показываялюбой пользовательский интерфейс с просьбой установить обновление.Это не должно происходить в идеале в соответствии с документами.

Я пытался удалить все виды слушателей, комментируя код, который завершает обновление, но безрезультатно.

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();
}

1 Ответ

0 голосов
/ 12 июля 2019

Хорошо, так что на самом деле документация не совсем ясна по этому поводу, но одна оговорка в обновлении Flexible In-app заключается в том, что как только вы начнете загружать обновление в приложении и продолжите использовать приложение, обновление будет загружено вфон, а затем уведомит пользователя через пользовательский интерфейс о том, что обновление было загружено, и нам нужно установить обновление (это отображение пользовательского интерфейса и все будет обработано разработчиком).

Но во втором случае,у меня возникла проблема: что если перед загрузкой обновления я перенесу свое приложение в фоновый режим?В этом случае, если обновление загружается, когда приложение находится в фоновом режиме, оно также установит обновление, не сообщая пользователю о новой версии, а затем, когда вы перенесете свое приложение на передний план, вы увидите обновленное приложение.вместо любого пользовательского интерфейса.

Гибкое обновление предназначалось только для этого: если пользователь использует приложение, обновление будет загружено в фоновом режиме, при этом у пользователя не будет проблем с закрытием приложения и его обновлением.оставив работу, которую они выполняли в приложении, а затем разместив обновление, пользователь получит возможность окончательно установить обновление, используя отображаемый им пользовательский интерфейс, когда они захотят или когда они завершат свою текущую работу в приложении.

В приложении больше предостережений, и эта средняя статья будет полезна для вас, чтобы увидеть больше крайних случаев https://proandroiddev.com/android-in-app-updates-common-pitfalls-and-some-good-patterns-9024988bbbe8

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...