2015-02-18 9 views
0

Итак, я новичок в прошедшей тревоге в реальном времени, и я попытался запустить мой сервис после включения телефона, но служба, похоже, не запускается.AlarmManager Elapsed Real Time Не работает?

Настройка сигнализации.

Intent sintent=new Intent(getApplicationContext(),alrmsetter.class); 
     PendingIntent setter= PendingIntent.getService(getApplicationContext(),137,sintent,0); 
     AlarmManager mmanager=(AlarmManager)getSystemService(ALARM_SERVICE); 
     mmanager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,6*1000,setter); 

Сервис

public class alrmsetter extends Service 
{ 
    public IBinder onBind(Intent intent) 
    { 
     return null; 
    } 

    public int onStartCommand(Intent intent, int flags, int startId) 
    { 
     Log.i("AREW","CLASS STRTED?"); 
     return super.onStartCommand(intent, flags, startId); 

    } 
} 
+0

Где вы звоните в код намерения «установить будильник»? – Devunwired

+0

Он находится в первом блоке кода, где указано manager.set – endlesschaos

+0

Я имел в виду, где называется этот код кода? В мероприятии, радиовещательный приемник, другой? – Devunwired

ответ

1

Я пытался сделать свой бег службы после того, как телефон был включен, но услуга не кажется, задавит

Сигнализации не сохраняются при перезагрузках, поэтому независимо от того, установлен ли будильник до того, как телефон был выключен, сигнал тревоги не будет запускаться при следующей загрузке, если он не будет установлен снова.

Это действительно то, ради чего предназначено действие для трансляции BOOT_COMPLETED. Он дает приложениям возможность устанавливать (или восстанавливать) свои аварийные сигналы при запуске. Этот dev guide рассказывает о том, как его использовать. Если вы ориентируетесь на Android 5.0+, вы можете часто использовать JobScheduler, чтобы вызвать сервис аналогичным образом, и он будет продолжать работать для вас.

В вашем случае вы пытаетесь установить будильник в течение «6 секунд после загрузки устройства». Это может быть сложно, так как прошедшие часы реального времени начинаются с низкоуровневых этапов загрузки, и к тому моменту, когда срабатывает даже BOOT_COMPLETED, на большинстве устройств оно будет больше 6 секунд.

Если вы действительно нужно сделать что-то во время загрузки, обрабатывать его непосредственно в обработчике BOOT_COMPLETED приемника (т.е. начать службу там). Затем используйте будильник, если вам нужно повторить действие после этой точки.