-1
我有一個報警在我的應用程序:爲什麼我的Android AlarmManager代碼無法正常工作?
public class MainActivity extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState){
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.curentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 11);
calendar.set(MINUTE, 11);
Intent intent = new Intent(this, AlarmReceiver.class);
PendingIntent pendingIntent = Pending.getBroadcast(this, 0, intent, 0);
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
alarmManager.setInexactRepeating(AlarmManager.RTC, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntente);
}
}
這是我AlarmReceiver.class
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent){
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
System.out.println("ALARM: " + sdf.format(new Date()));
}
}
在我的AndroidManifest.xml我這行
<receiver android:name=".main.AlarmReceiver" />
的問題是在我設定的時間內,鬧鐘不會報警。我設置了報警
calendar.set(Calendar.HOUR_OF_DAY, 11);
calendar.set(MINUTE, 5);
然後報警在11:11:29
報警。然後我設置了報警
calendar.set(Calendar.HOUR_OF_DAY, 11);
calendar.set(MINUTE, 20);
然後報警在11:26:29
報警。然後我設置了報警
calendar.set(Calendar.HOUR_OF_DAY, 11);
calendar.set(MINUTE, 29);
然後報警在11:41:29
報警。
整個上午這樣繼續。不過,如果我替換該行
alarmManager.setInexactRepeating(AlarmManager.RTC, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntente);
這一行
alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, (SystemClock.elapsedRealtime()+10000), pendingIntent);
然後報警的報警完全在適當的10秒。
這是怎麼回事?
我錯過了閱讀文檔;謝謝你指出。 – Brian