AlarmManager的一些方法

来源:互联网 发布:simulink一端口多输入 编辑:程序博客网 时间:2024/05/20 13:05

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">   调用重复执行方法,可指定具体起始时间</span><span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">   </span><span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"></span>

Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(System.currentTimeMillis()); calendar.setTimeZone(TimeZone.getTimeZone("GMT+8")); // 这里时区需要设置一下,不然会有8个小时的时间差 calendar.set(Calendar.YEAR,2015); calendar.set(Calendar.MONTH,Calendar.NOVEMBER);// calendar.set(Calendar.DAY_OF_MONTH, 12); calendar.set(Calendar.HOUR_OF_DAY, 16); calendar.set(Calendar.MINUTE, 18); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); AlarmManager manager = (AlarmManager)getSystemService(ALARM_SERVICE);            manager.setRepeating(AlarmManager.RTC_WAKEUP,            calendar.getTimeInMillis(), 10*1000, sender);//calendar.WEEK_OF_MONTH

在onReceiver里做一些具体操作


public class AlarmReceiver extends BroadcastReceiver {@Override    public void onReceive(Context context, Intent intent) {Toast.makeText(context, "闹铃响了, 可以做点事情了~~", Toast.LENGTH_LONG).show(); SmsManager smsManager = SmsManager.getDefault(); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式// System.out.println(df.format(new Date()));// new Date()为获取当前系统时间// smsManager.sendTextMessage("17801072065", null, df.format(new Date())+":its a test message", null, null); System.out.println(df.format(new Date())+"闹铃响了, 可以做点事情了~~");}}

经过测试安卓原生4.4系统 杀不死 但是小米和oppo会杀死 


AlarmManager.RTC,硬件闹钟,不唤醒手机(也可能是其它设备)休眠;当手机休眠时不发射闹钟。
AlarmManager.RTC_WAKEUP,硬件闹钟,当闹钟发躰时唤醒手机休眠;
AlarmManager.ELAPSED_REALTIME,真实时间流逝闹钟,不唤醒手机休眠;当手机休眠时不发射闹钟。
AlarmManager.ELAPSED_REALTIME_WAKEUP,真实时间流逝闹钟,当闹钟发躰时唤醒手机休眠;


需要注意的是如果开始时间是指定的具体时间的时候,用 RTC模式才可以,用ELAPSED模式是无法生效的


0 0
原创粉丝点击