Использование процессора Android PhoneGap в фоновом режиме - PullRequest
4 голосов
/ 16 января 2012

Я работаю над приложением phonegap для Android, но застрял на следующем;Когда я выполняю фоновую проверку приложения и проверяю журнал задач, приложение по-прежнему потребляет значительную часть ЦП (от 5%, а иногда даже до 15%).Я попытался удалить все остальные части моего кода, но единственное, что мешает приложению работать с процессором в фоновом режиме, - это удалить phonegap.js из моего кода.

У меня сложилось впечатление, что Phonegap остановит выполнение javascript при входе в onPause, но я должен что-то упустить.

Я пробовал 1.1.0, 1.2.0 и 1.3.0, нетпомогло.Интересно также и то, что если я запускаю 2 приложения с помощью телефонного промежутка, их фоновое использование ЦП, похоже, ведет себя одинаково: одно возрастает, другое возрастает, и в основном они точны в использовании вплоть до процентного значения.

Кто-нибудь понял, что приложение все еще делает в процессоре и / или как я могу узнать?

С уважением

Ответы [ 3 ]

2 голосов
/ 16 января 2012

выполнение js не останавливается, когда приложение переходит в onPause, оно только останавливается, когда приложение закрывается / уничтожается.

1 голос
/ 13 марта 2014

Поведение Cordova / PhoneGaps по умолчанию - поддерживать приложение в фоновом режиме. Это можно изменить, добавив тег «keepRunning» в файл config.xml:

keepRunning (логическое, по умолчанию true).) - Определяет, будет ли Cordova работать в фоновом режиме или нет

<preference name="keeprunning" value="false"/>
0 голосов
/ 29 мая 2014

Я заметил ту же проблему, особенно на KitKat. Чтобы решить эту проблему, в своей основной деятельности (операции, которая расширяет DroidGap) вам нужно вызвать метод onPause () для вашего WebView (который является переменной «appView»).

Это приостанавливает любую дополнительную обработку, связанную с WebView, которая должна значительно сократить использование вашего процессора:

@Override
protected void onPause()
{
    super.onPause();

    if (appView != null)
    {
        appView.onPause();
    }
}

@Override
protected void onResume()
{
    super.onResume();

    if (appView != null)
    {
        appView.onResume();
    }
}
...