如何每小时执行一项任务?
我一直在开发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);