Phonegap — щелчок по значку перезапускает приложение вместо переключения на уже запущенное приложение

У меня есть очень простое приложение Phonegap, которое загружает внешний веб-сайт:

<script type="text/javascript" src="cordova.js"></script>
<script>
    function onDeviceReady() {
        if (navigator.connection.type == Connection.NONE) {
            navigator.notification.alert('An internet connection is required to continue');
        } else {
            window.location = "http://example.com";
        }
    }
    document.addEventListener("deviceready", onDeviceReady, false);
</script>

Когда я запускаю его, все работает правильно и загружает внешний сайт. Если я переключаюсь на другое приложение, а затем щелкаю значок, чтобы запустить его (в Android), он без проблем переключается обратно на уже запущенное приложение.

Проблема начала возникать, когда я переключился с тестовой среды на производственную и переключил ее на версию https. Теперь, когда я нажимаю на значок, он перезапускает приложение, а не просто переключается обратно на уже запущенное приложение.

Есть ли способ контролировать, перезагружает ли приложение щелчок по значку или просто переключается обратно на уже запущенное приложение?

ИЗМЕНИТЬ:

Хорошо, я думал, что единственная разница заключается в изменении «http» на «https», но, видимо, я также обновил «phonegap». Я попытался переключить его обратно на «http», и он все еще делает то же самое неправильно. Есть ли способ контролировать это? В настоящее время я использую 6.5.2, и я думаю, что правильная функциональность была с 6.5.0.

ИЗМЕНИТЬ 2:

Хорошо... Кажется, это несколько случайно. У меня он работает с последней версией и использует «https», и иногда он перезагружается, а иногда нет.


person Tim Tisdall    schedule 03.07.2017    source источник


Ответы (1)


Каждая мобильная операционная система имеет разные способы управления памятью в приложениях. Общее мнение заключается в том, что приложение всегда должно «сохраняться рано/часто» на случай, если ОС убьет его, чтобы освободить память и т. д.

Хотя в этом случае может быть выход. Попробуйте режим запуска Android:

<preference name="AndroidLaunchMode" value="singleInstance" />

Я никогда не пользовался этим, поэтому, возможно, попробуйте также каждый режим< /а>.

person dotNetkow    schedule 06.07.2017
comment
Да, я посмотрел на это. По умолчанию singleTop. И singleTask, и singleInstance, по-видимому, указывают на то, что они перезапускаются, где говорится, что «всегда будет создаваться новая задача, и новый экземпляр будет помещен в задачу как корневой». Тем не менее, я не пробовал, чтобы увидеть, что именно он делает. - person Tim Tisdall; 06.07.2017
comment
Кроме того, я знаю, как Android убивает процессы, но, похоже, это происходит немедленно (щелкните значок, чтобы сначала запустить, а затем вернитесь, чтобы щелкнуть его, и он сразу же перезапустится). Однако, когда он перезагружается, я обнаружил, что удаление некоторых других приложений, похоже, побуждает его продолжать работать. - person Tim Tisdall; 06.07.2017