У меня есть приложение для будильника. Поток выглядит следующим образом:
WakefulBroadcastReceiver (приобретает wakelock) --->> Служба Intent -->> startActivity
public class AlarmService extends IntentService {
protected void onHandleIntent(Intent intent) {
Intent activityIntent = new Intent(this, TriggeredActivity.class);
activityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(activityIntent);
По сути, WakefulBroadcaseReceiver запускает службу намерений, используя startWakefulService(). Внутри службы намерений onHandleIntent() единственная работа, которую я делаю, — это запуск новой активности с использованием startActivity(). В этом новом действии я использую mediaPlayer в цикле, который подает сигнал тревоги. У этого действия есть кнопка закрытия, которая ожидает щелчка пользователя, чтобы остановить медиаплеер и завершить действие. Теперь проблема, с которой я столкнулся, заключается в том, что после вызова startactivity() внутри службы намерений я не могу дождаться завершения TriggeredActivity (нет эквивалента startActivityForResult в службе), а затем завершить намерение бодрствования. Связанная ссылка
startActivity(активностьIntent); WakefulBCastReceiver.completeWakefulIntent(намерение); /* здесь нельзя */
Поэтому я не отключаю здесь wakelock явным образом.
Мой вопрос в том, будет ли wakelock автоматически освобождаться (ссылка на смерть), когда процесс, который его удерживает, будет убит. Если да, то в моем конкретном сценарии мне не нужно вызывать WakefulBCastReceiver.completeWakefulIntent().
release()
вашWakeLock
- person pskink   schedule 02.10.2016