使用方法:AlarmManger或我自己的Timer服务(scheduleAtFixedRate(任务,延迟,周期));

时间:2012-07-30 09:08:36

标签: android alarmmanager


在我的情况下,我必须做一个任务,让我们说在接下来的3小时内每5分钟。哪一个会更好AlarmManger或Timer。在AlarmManger的情况下,我将启动一个意图服务,它将执行任务,在稍后我将使用TimerTask。此外,如何在intentService onHandleIntent中获得使用AlarmManager.cancel(pendingIntent)的待定意图。

可能的副本,但有不同的情况。 Timer Task VS Alarm Manager usage in Android Service

感谢。

1 个答案:

答案 0 :(得分:1)

首先,设置:

Intent i = new Intent( context.getApplicationContext(), NameOfYourClass.class );
PendingIntent pi = PendingIntent.getBroadcast( c.getApplicationContext(), 0, i, 0 );
AlarmManager am = (AlarmManager) context.getSystemService( Context.ALARM_SERVICE );
am.setRepeating( AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime(), 5*60*1000, pi ); 
// ELAPSED_REALTIME will execute ONLY when phone is awake, to execute always use ELAPSED_REALTIME_WAKEUP

在初始设置之后,在计数器启动时保存:,例如。 PreferenceManager

最后,到时候:

Intent i = new Intent( context.getApplicationContext(), NameOfYourClass.class );
PendingIntent pi = PendingIntent.getBroadcast( context.getApplicationContext(), 0, i, 0 );
AlarmManager am = (AlarmManager) context.getSystemService( Context.ALARM_SERVICE );
am.cancel( pi );