AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intent =new Intent("com.android.settings.action.REQUEST_POWER_ON");
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
am = (AlarmManager) context .getSystemService(Context.ALARM_SERVICE);
am.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, time, pendingIntent);
在android开发中,经常会用到定时触发某些操作,或者是间隔处理某件事
如闹钟,和后台定时请求数据:
需要定时处理闹钟任务
定时向服务器请求数据等
对于上述问题,我们可以通过定时器来完成,普遍的做法使用一个Thread来操作.也有使用Time实现定时操作
而android库里面也有一种全新的操作方式AlarmManager
那这几种方式有何区别呢
1.Thread:使用线程方式
2.Time是java的特性
3.AlarmManager:AlarmManager将应用与服务分割开来后,使得应用程序开发者不用 关心具体的服务,而是直接通过AlarmManager来使用这种服务。这也许就是客户/服务模式的好处吧。
第一种和第二种就不过多解释了,在此着重解释一下第三种
当我们在开发android程序时,有些用户会使用service来管理一些后台的任务,如网络操作,或者间断处理数据等,这些用户需要在用户关闭程序,或者关闭屏幕后也能处理后台任务,可android手机为了节省电池使用,当用户关闭屏幕后,会将cpu置于休眠状态,当休眠状态启动,我们的服务就处于暂停状态了.为了斛决这个问题,android库里就提供了一个AlarmManager的库,AlarmManager是客户/服务模式的模式,也就是说AlarmManager是由系统来管理,而不是我们应用程序的一部分,也就是说AlarmManager是全局的,当我们的程序启用AlarmManager后,就给系统注册了一个服务,该服务会根据你设置的参数定时的向你的应用程序发送消息(注意,此消息以广播方式发送).
AlarmManager的使用如下: