使用AlarmManager延迟运行服务

  在没有activity运行的情况下,为在后台运行服务,需要想一个办法启动它。可以使用AlarmManager,AlarmManager是可以发送Intent的系统服务。
  那么如何告诉AlarmManager想要发送的intent呢?可以使用PendingIntent。使用PendingIntent打包一个intent,然后将其发送给AlarmManager

  启动定时器的方法应该是一个静态方法。这样,定时器代码和与之相关的代码就可以放在一起,同时其他系统部件还能调用它。

public static void setServiceAlarm(Context context, boolean isOn) {
       Intent i = PollService.newIntent(context);
       PendingIntent pi = PendingIntent.getService(context, 0, i, 0);
       AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);

       if (isOn) {
             alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME,
                     SystemClock.elapsedRealtime(), TimeUnit.MINUTES.toMillis(1), pi);
        } else {
            alarmManager.cancel(pi);  
            pi.cancel();
        }
}

你可能感兴趣的:(使用AlarmManager延迟运行服务)