在我的情况下,我必须做一个任务,让我们说在接下来的3小时内每5分钟。哪一个会更好AlarmManger或Timer。在AlarmManger的情况下,我将启动一个意图服务,它将执行任务,在稍后我将使用TimerTask。此外,如何在intentService onHandleIntent中获得使用AlarmManager.cancel(pendingIntent)的待定意图。
可能的副本,但有不同的情况。 Timer Task VS Alarm Manager usage in Android Service
感谢。
答案 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 );