2016-04-01 4 views
1

Я пытаюсь разбудить свое устройство, используя WakefulBroadcastReceiver, который запускает Сервис. Служба запускает Activity и в конце уведомляет WakefulBroadcastReceiver, чтобы закончить работу. Я сделал файл журнала, и я ничего не вижу. Когда я разблокирую устройство, через несколько секунд начинается активность. Почему не происходит, когда я устанавливаю будильник?Почему WakefulBroadcastReceiver не разбудит мое устройство от глубокого сна?

Манифест содержит объявление BroadcastReceiver и сервиса и разрешение WAKE_LOCK.

Вот WakefulBroadcastReceiver:

public class AlarmBroadcastReceiver extends WakefulBroadcastReceiver { 

    public AlarmBroadcastReceiver() { 
     Logging.logToFile("Construct broadcast receiver"); 
    } 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Intent service = new Intent(context, AlarmService.class); 
     startWakefulService(context, service); 
     Logging.logToFile("Started wakeful broadcast receiver"); 
    } 
} 

А вот Класс обслуживания:

public class AlarmService extends IntentService { 

    public AlarmService() { 
     super("AlarmService"); 
     Logging.logToFile("Started intent service"); 
    } 

    @Override 
    protected void onHandleIntent(Intent intent) { 

     Logging.logToFile("Handle intent service"); 
     Intent service = new Intent(this, WakeUpActivity.class); 
     service.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
     startActivity(service); 

     AlarmBroadcastReceiver.completeWakefulIntent(intent); 

    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
     Logging.logToFile("Destroy intent service"); 
    } 
} 

А вот мой журнал:

At 2016-04-01 23:14: Alarm set at 23:20 
At 2016-04-01 23:23: Construct broadcast receiver 
At 2016-04-01 23:23: Started wakeful broadcast receiver 
At 2016-04-01 23:23: Started intent service 
At 2016-04-01 23:23: Handle intent service 
At 2016-04-01 23:23: Started WakeActivity 
At 2016-04-01 23:23: Destroy intent service 
At 2016-04-01 23:25: Alarm set at 23:30 
At 2016-04-01 23:33: Construct broadcast receiver 
At 2016-04-01 23:33: Started wakeful broadcast receiver 
At 2016-04-01 23:33: Started intent service 
At 2016-04-01 23:33: Handle intent service 
At 2016-04-01 23:33: Destroy intent service 
At 2016-04-01 23:33: Started WakeActivity 
At 2016-04-01 23:34: Alarm set at 23:40 
At 2016-04-01 23:42: Construct broadcast receiver 
At 2016-04-01 23:42: Started wakeful broadcast receiver 
At 2016-04-01 23:42: Started intent service 
At 2016-04-01 23:42: Handle intent service 
At 2016-04-01 23:42: Destroy intent service 
At 2016-04-01 23:42: Started WakeActivity 
At 2016-04-01 23:43: Started WakeActivity 
At 2016-04-01 23:44: Alarm set at 23:49 
At 2016-04-02 00:02: Construct broadcast receiver 
At 2016-04-02 00:02: Started wakeful broadcast receiver 
At 2016-04-02 00:02: Started intent service 
At 2016-04-02 00:02: Handle intent service 
At 2016-04-02 00:02: Started WakeActivity 
At 2016-04-02 00:02: Destroy intent service 

Edit: И это, как я установить сигнализация:

Intent intent = new Intent(SmartClockActivity.this, AlarmBroadcastReceiver.class); 
PendingIntent pendingIntent = PendingIntent.getBroadcast(SmartClockActivity.this, 0, intent, 0); 
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent); 
+1

Пожалуйста, укажите, как вы настраиваете будильник –

+0

@DavidMedenjak, сделано. –

ответ

0

Предлагаю вам воспользоваться Сервисом и выполнить обработку. Я думаю, что скорее всего ваше приложение будет убито, поэтому IntentService, связанный с созданной им Activity, также будет убит. Попробуйте использовать полный объем обслуживания и он должен решить вашу проблему.

+0

Спасибо! Я постараюсь сделать это как можно скорее. –

+0

Все еще не работает .. –

Смежные вопросы