im, получающий намерение в широковещательном приемнике, а затем я начинаю сервис, чтобы сделать больше работы. теперь, что, если устройство сон, и это произойдет, я должен получить Wakelock (AlarmManger?) и зачем мне это нужно? ли мой сервис перестанет работать, если устройство отправится спать, не получив wakelock.BroadcastReceiver, Service и Wakelock
ответ
Теперь что, если устройство сна, и это произойдет, мне нужно получить Wakelock (AlarmManger?) И зачем мне это нужно?
Если устройство с самого начала спит, вы не будете «получать намерение в широковещательном приемнике», поскольку устройство спит.
Мне нужно получить Wakelock (AlarmManger?) И зачем мне это нужно?
Вы не нуждаетесь в нем, если не хотите, чтобы устройство работало, пока вы выполняете какую-либо работу.
ли мой сервис прекратит работать, если устройство отправляется спать, не получая вакелон.
Да.
public class WakeLockManager extends BroadcastReceiver {
private static WakeLock mWakeLock;
private String LCLT;
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Consts.WAKELOCK_INTENT)) {
Log.v("wakelock", "GOT THE wakelock INTENT");
boolean on = intent.getExtras().getBoolean("on");
if (mWakeLock == null) {
PowerManager pm = (PowerManager) context
.getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
"Breeze WakeLock");
}
if (on) {
if (!mWakeLock.isHeld()) {
mWakeLock.acquire();
Log.v("wakelock", "acquiring wakelock");
}
} else {
if (mWakeLock.isHeld()) {
Log.v("wakelock", "releasing wakelock");
mWakeLock.release();
}
mWakeLock = null;
}
}
}
}
взгляд на приведенный выше код ..put в отдельном файле класса и и в манифесте определить его для некоторого пользовательского намерения .... теперь, что этот класс будет реагировать на пользовательские намерения ... просто вещать, что намерение, и вы можете включить wakelock или отключить в целом приложение, так как wakelock является static..like это:
public void setWakeup(boolean status) {
Intent wakelock_Intent = new Intent(CUSTOM_INTENT);
wakelock_Intent.putExtra("on", status);
this.sendBroadcast(wakelock_Intent);
}
вышеприведенным будет определяться в коде alarmmanager так что это в расписании звонков
Вы уверены, что это " статическая блокировка "не будет удалена, когда класс-приемник будет выгружен? Смотрите: http://stackoverflow.com/questions/6299283/broadcastreciever-life-cycle-static-variables#comment7376537_6299862 –
Я предполагаю, что объект не будет собираться с мусором, поскольку это не анонимный широковещательный приемник. Если я сам выделяю этот объект и поддерживаю жесткую ссылку на него, почему он освобождается системой? это интересная тема, пожалуйста, сообщите. – j2emanue
Похоже, что родной Android WakefulBroadcastReceiver будет идеальным решением для вас. Нужно расширить это, а не на регулярной BroadcastReceiver и запустить службу в OnReceive() в «бодрствующем» манере:
startWakefulService(context, service);
и сигнализировать ваша работа выполняется в onHandleIntent сервиса() , позвонив по телефону
MyWakefulReceiver.completeWakefulIntent(intent);
- 1. register broadcastReceiver in Service
- 2. Bind Service to BroadcastReceiver
- 3. service and broadcastreceiver
- 4. Приложение Cordova: Wakelock, Service или AlarmManager?
- 5. AlarmManager, BroadcastReceiver и Service не работают
- 6. LocationClient Timer in Service with WakeLock
- 7. WakeLock под автоподстройки GCM_LIB
- 8. Смутно о Android BroadcastReceiver & Service
- 9. BroadcastReceiver-> Service-> Уведомление
- 10. Android Calling Service от BroadcastReceiver
- 11. Правильный шаблон для BroadcastReceiver, получающий wakelock, чтобы начать работу?
- 12. Android GCM Intent Service застрял в выпуске Wakelock
- 13. Android - мне нужен WakeLock?
- 14. Android WakeLock и KeyGuard
- 15. wakeLock и wifiLock
- 16. Google Cloud Messaging: BroadcastReceiver или Service?
- 17. Должен ли я использовать BroadcastReceiver или Service?
- 18. Service + BroadcastReceiver pair vs Loader/AsyncTaskLoader
- 19. Codename One SMS BroadcastReceiver and Service
- 20. WakeLock не выключается и экран не выключается
- 21. Активный ресурс приложения BroadcastReceiver, Service и Activity Application?
- 22. Android BroadcastReceiver и глубокий сон
- 23. Android BroadcastReceiver ждет, когда Служба начнет или передаст WakeLock на службу?
- 24. wakelock, глубокий сон и gcm
- 25. Служба Android, Thread и WakeLock
- 26. Android-сервер SMS и WakeLock?
- 27. Разница между Wakelock и FLAG_KEEP_SCREEN_ON?
- 28. Android: MediaPlayer и AsyncTask Wakelock
- 29. Справочная служба wakelock и нить
- 30. Android Wear Watchface и WakeLock
для первой части, я имел в виду, что получаю намерение от C2DM, которое, я думаю, вы могли получить его, пока устройство спит. и затем я хочу запустить службу, и я думаю, мне нужно заставить wakelock поддерживать ее работу. это предположение верно? – Jimmy
@Fevos: «Я имел в виду, что получаю намерение от C2DM, которое, я думаю, вы можете получить его, пока устройство спит». - да, C2DM использует соединение сокета по беспроводным данным (AFAIK), а входящие пакеты на этом соединении быстро пробудят устройство *. ", а затем я хочу запустить службу, и я думаю, мне нужно заставить wakelock продолжать ее работу. Это предположение верно?" - да, вам понадобится собственный 'WakeLock'. Просто не забудьте освободить его, когда закончите. – CommonsWare
Отлично! Благодарю. – Jimmy