0

我已经多次使用警报,但我一生都无法触发它......我做错了什么?我试过触发服务,广播接收器,一切。我尝试过从更早的时间和将来(从现在起 5 秒)触发它。据我所知,它正在被设置,它没有抛出错误,我的日志正在触发......但 AlarmReceiver 中没有任何内容被触发。

public void setAlarm() {
            Calendar exp = Calendar.getInstance();
            exp.set(Calendar.SECOND, 5);

            AlarmManager am = (AlarmManager)mContext.getSystemService(Context.ALARM_SERVICE);
            am.set(AlarmManager.RTC_WAKEUP, exp.getTimeInMillis(),  PendingIntent.getService(mContext, 0, new Intent(mContext, AlarmReceiver.class), 0));
            Log.i("", "Alarm set for " + DateFormat.format("MMMM dd, yyyy hh:mma", exp.getTime()));

        }

    }

public class AlarmReceiver extends Service {

    @Override
    public IBinder onBind(Intent intent) {
        Log.d("", "onBind Tiggered");
        return null;
    }

    public void onCreate() {
        Log.d("", "onCreate Triggered");
    }
}
4

2 回答 2

2

不要忘记将您的服务添加到您的清单中!

于 2013-09-04T03:18:11.807 回答
0

如果您在一分钟的前 5 秒内运行此程序,时间只会在未来。

您应该使用calendar.add(field, value);添加到时间。

如果您处于 GMT 以外的时区,那也可能会导致日历关闭。

要设置 5 秒的闹钟,最简单的方法是:

alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + (5 * 1000), pendingIntent);
于 2013-09-04T02:02:41.580 回答