У меня есть приложение Android Phonegap (3.0), которое необходимо периодически опросить веб-API для данных.
Я хотел бы сохранить его в живых, даже когда он перемещается на задний план. Я последовал общий совет в this post и реализовал WakeLock
с PARTIAL_WAKE_LOCK
уровня, который создается в методе OnCreate приложенияWakeLock не поддерживает приложение Phonegap active
pm = (PowerManager)this.getSystemService(Context.POWER_SERVICE);
wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, org.apache.cordova.CordovaActivity.TAG);
wl.acquire();
У меня также есть призыв к wl.release()
в onTerminate()
Поведения я вижу (с logging) заключается в том, что приложение будет продолжать работать (периодически проверять данные сервера), даже когда экран становится темным. Но когда я переключусь на другое приложение для прокрутки, опрос остановится на несколько минут.
Update: У меня есть необходимое разрешение, установленное в файле манифеста
<uses-permission android:name="android.permission.WAKE_LOCK" />
У меня под впечатлением, что wakelocks предназначены для того, чтобы держать устройство в активном состоянии, пока ваше приложение работает на переднем плане, а не для того, чтобы поддерживать его в течение какого-то времени, пока оно находится в фоновом режиме и другие приложения находятся на переднем плане. Фоновая служба может быть способом сохранить ваше приложение в фоновом режиме в течение длительного времени (и использовать меньше батареи, чем wakelock) – DaveAlden