Подтвердить что ты не робот

PhoneGap продолжает работать на Android после onPause

Я решил проверить, жив ли телефонная книга WebView, когда приложение находится в фоновом режиме.

function test2(x){
    $('<div></div>', {text: x.cmd}).appendTo($('#list'));
}
$(function(){test2({cmd:"start"});});
function cb_pause(){test2({cmd:"pause"});}
function cb_resume(){   test2({cmd:"resume"});}
function tick(){test2({cmd:"timer" + timer});timer++;setTimeout(tick, 1000);}
document.addEventListener("pause", cb_pause, false);
document.addEventListener("resume", cb_resume, false);
tick();

Он печатает pause и resume на onPause и onResume. и печатать timer0, timer1 и т.д. каждую секунду.

Это была печать, даже когда я оставил приложение и начал играть в игру. Я знаю, что могу и должен остановить таймер в onPause, но все же. Это выглядит неправильно. Я ожидал, что android заморозит WebView.

Я знаю, что фоновый поток не остановится, если в фоновом приложении пока он не будет выгружен.

Итак, вопрос: есть ли способ заморозить/приостановить/выгрузить webview на onPause и разморозить/возобновить/загрузить на onResume

Когда я говорю load, я имею в виду, что он должен находиться в том же состоянии, когда пользователь оставил приложение.

Когда я говорю "заморозить", я имею в виду, что мой код будет приостановлен, даже когда он будет продолжать звонить setTimeout

Думаю, я ожидаю, что Android будет вести себя как iOS.

4b9b3361

Ответ 1

Я опоздал с ответом. В телефонной таблице есть KeepRunning param в config.xml

Вы должны добавить следующую строку в config.xml

<platform name="android">
    ...
    <preference name="KeepRunning" value="false" />

Он вызывет pauseTimers() и приостановит все WebView. pauseTimers() не является скрытым методом и не требуется никакого отражения.