我正在尝试发出一个警报,从现在起一段时间内从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();
}
然而,由于某种原因没有任何事情发生。
答案 0 :(得分:0)
您正在传递AlarmManager.ELAPSED_REALTIME_WAKEUP
,这意味着AlarmManager
在检查时间戳时将使用SystemClock.elapsedRealtime()
。由于你传递了System.currentTimeMillis()
以外的东西,你将不得不等待大约47年才会发出警报。
将您的第一个参数更改为AlarmManager.RTC_WAKEUP
或将您的时间戳更改为SystemClock.elapsedRealtime()
。