为什么我的AlarmManager无法正常工作?

时间:2017-07-26 03:04:27

标签: android android-fragments timer alarmmanager

我正在尝试发出一个警报,从现在起一段时间内从DialogFragment中触发一个事件。

这是相关代码,我放入onCreate():

broadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context c, Intent i) {
        Toast.makeText(c, "Rise and Shine!", Toast.LENGTH_LONG).show();
    }
};
getActivity().registerReceiver(broadcastReceiver, new IntentFilter(ALARM_MANAGER_TAG) );
pendingIntent = PendingIntent.getBroadcast(getActivity(), 0, new Intent(ALARM_MANAGER_TAG), 0 );
alarmManager = (AlarmManager)(getActivity().getSystemService( Context.ALARM_SERVICE ));

然后当我按下开始按钮时:

alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, timestampEnd, pendingIntent);

在这种情况下timestampEnd = System.currentTimeMillis() + 10 * 1000;,10秒。

然后我覆盖了破坏:

@Override
public void onDestroy() {
    alarmManager.cancel(pendingIntent);
    getActivity().unregisterReceiver(broadcastReceiver);
    super.onDestroy();
}

然而,由于某种原因没有任何事情发生。

1 个答案:

答案 0 :(得分:0)

您正在传递AlarmManager.ELAPSED_REALTIME_WAKEUP,这意味着AlarmManager在检查时间戳时将使用SystemClock.elapsedRealtime()。由于你传递了System.currentTimeMillis()以外的东西,你将不得不等待大约47年才会发出警报。

将您的第一个参数更改为AlarmManager.RTC_WAKEUP或将您的时间戳更改为SystemClock.elapsedRealtime()