如何每小时执行一项任务?

我一直在开发Android应用程序,我需要每小时执行1个任务。 我使用以下代码:

private static final long ALARM_PERIOD = 1000L; public static void initAlarmManager(Context context) { Editor editor=PreferenceManager.getDefaultSharedPreferences(context).edit(); editor.putBoolean(context.getString(R.string.terminate_key), true).commit(); AlarmManager manager = (AlarmManager) context.getSystemService(context.ALARM_SERVICE); Intent i = new Intent(context, AlarmEventReceiver.class); PendingIntent receiver = PendingIntent.getBroadcast(context, 0, i, 0); manager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime(), ALARM_PERIOD, receiver); } 

它适用于我,但我的客户告诉我,该任务只工作一次,不会工作1小时。 我哪里弄错了? 请告诉我。 谢谢。

根据您的代码,ALARM_PERIOD是1000L,作为重复间隔。 所以我怀疑每1000毫秒会发出一次警报。

如果您为每小时设置重复间隔,则应为3600000L。 请注意,如果重新启动手机,除非您重新开始,否则您的闹钟管理器将不再有效。

这是我的代码:

 private void setAlarmManager() { Intent intent = new Intent(this, AlarmReceiver.class); PendingIntent sender = PendingIntent.getBroadcast(this, 2, intent, 0); AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); long l = new Date().getTime(); if (l < new Date().getTime()) { l += 86400000; // start at next 24 hour } am.setRepeating(AlarmManager.RTC_WAKEUP, l, 86400000, sender); // 86400000 } 

您是否在manifest.xml中的应用程序标记中添加了receiver标记

我推荐你使用Android-TimerTask而不是Alram-Manager

TimerTask类表示在指定时间运行的任务。 任务可以运行一次或重复运行。 它完美适合您的要求。

尝试通过更改这样的setRepeating()方法来修改代码

 manager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,SystemClock.elapsedRealtime(), SystemClock.elapsedRealtime()+(60*60*1000), receiver); 

要么

测试它每分钟重复一次

 manager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,Calendar.getInstance().getTimeInMillis(), Calendar.getInstance().getTimeInMillis()+(1*60*1000), receiver);