我想在我的活動中使用報警管理器。我建立了一個鬧鐘,以在類似這樣的主要活動的方法的onPause,AlarmManager和WakeLock
Intent intent= new Intent(namaz_vakti_activity.this, namaz_vakti_activity.class);
PendingIntent sender = PendingIntent.getActivity(this, 1234567, intent,Intent.FLAG_ACTIVITY_NEW_TASK);
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
eltime=Calendar.getInstance().getTime().getHours()*60+Calendar.getInstance().getTime().getMinutes();
eltime=(long)(Sun_Rise*60)-eltime;
if (eltime<0)
eltime=eltime+24*60;
eltime=eltime-pre_time;
if (eltime<=0)
eltime=eltime+24*60;
if (uyandirma)
{
am.set(AlarmManager.RTC_WAKEUP, Calendar.getInstance().getTimeInMillis()+eltime*60000, sender);
Toast.makeText(this,"Uyandirma saati "+ConvertTime(Sun_Rise-pre_time/60.0),Toast.LENGTH_SHORT).show();
}
else
{
am.cancel(sender);
}
namaz_vakti_activity是我的主要活動。 onPause和onResume方法屬於它。
我還在onResume方法中使用wakelock來防止發生睡着的模式。
pm = (PowerManager)this.getSystemService(Context.POWER_SERVICE);
wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK |PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE,"namaz_vakti_activity");
wl.acquire();
該代碼的主要目的是在特定時間再次啓動我的主要活動(namaz_vakti_activitiy)。如果設備未處於睡眠模式,則代碼運行良好。但是,如果它處於睡眠模式,它會發出錯誤並停止工作。我認爲解決方案非常簡單,而且我的代碼非常簡單。
@Peter,wakelock是否負責保持設備開啓,AlarmManager負責喚醒設備進入睡眠狀態? – ransh 2017-01-11 06:50:48