在Andriod系统中实现定时功能,最终还是要用到系统提供的AlarmManager,只是当一个定时完成后怎么继续处理,或者中间怎么更新定时的时间或者状态,像闹钟这种应用程序,每天重复定时,或者一周选择其中的几天... am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); if (Utils.isKitKatOrLater()...) { am.setExact(AlarmManager.RTC_WAKEUP, timeInMillis, pendingIntent); } else... { am.set(AlarmManager.RTC_WAKEUP, timeInMillis, pendingIntent); } }...整体的框架就是这样,在AlarmStateManager里使用AlarmManager形成了一个定时的状态机,不断转移到下一个状态处理。
AlarmManager称呼为全局定时器,有的称呼为闹钟。其实它的作用和Timer有点相似。...都有两种相似的用法: (1)在指定时长后执行某项操作(2)周期性的执行某项操作 AlarmManager 包含的主要方法: // 取消已经注册的与参数匹配的定时器 void cancel(PendingIntent...triggerAtTime, long interval, PendingIntent operation) //设置时区 void setTimeZone(String timeZone) AlarmManager...见api/app/alarm/AlarmController实例 demo: AlarmManager mgr = (AlarmManager) context .getSystemService...() + diff, AlarmManager.INTERVAL_DAY, pi);
本文实例为大家分享了Alarmmanager实现简单闹钟功能的具体代码,供大家参考,具体内容如下 代码: activity_main.xml <?...am= (AlarmManager) getSystemService(Context.ALARM_SERVICE); //触发闹钟的时间(毫秒) long triggerTime=...,triggerTime,op); // //指定时间重复执行闹钟 // am.setRepeating(AlarmManager.RTC,triggerTime,2000,op); }.../* 设置闹钟 */ public void startSetAlarmClick(View view) { //获取系统的闹钟服务 AlarmManager...am= (AlarmManager) getSystemService(Context.ALARM_SERVICE); //触发闹钟的时间(毫秒) long triggerTime=
Android通过AlarmManager类实现闹钟,供大家参考,具体内容如下 简介 闹钟是生活中最常用的功能了,很多App都可以加入该功能,提醒用户某个时刻要做的事情。...在Android系统中可以通过AlarmManager类实现闹钟,AlarmManager类是专门用来设定在某个指定的时间去完成指定的事件。...AlarmManager提供了访问系统警报的服务,只要在程序中设置了警报服务,AlarmManager就会通过onReceive()方法去还行这些事件,就算系统处于待机状态,同样不会影响运行。...接下来我们将使用AlarmManager来制作一个最简单的闹钟。 让我们来看一下AlarmManager都为我们提供了哪些方法,如下: ?...am = (AlarmManager) getSystemService(ALARM_SERVICE); // 设置闹钟 am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis
一看到这个需求就想到了使用 AlarmManager 来实现。 AlarmManager 经常被用来执行定时任务,比如设置闹铃、发送心跳包等。...所以,综上所述,AlarmManager 就成为了最佳选择。...SDK API < 19 一般情况下,使用 AlarmManager 来执行重复定时任务的代码如下所示: alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP...第一个参数表示闹钟类型:一般为 AlarmManager.ELAPSED_REALTIME_WAKEUP 或者 AlarmManager.RTC_WAKEUP 。...另外,对于相似的 AlarmManager.ELAPSED_REALTIME 和 AlarmManager.RTC 来说,它们不会唤醒 CPU 。
这篇文章使用AlarmManager实现了Android定时后台循环任务。使用场景:项目需要app每隔一段时间就去服务端请求一次接口,从而更新本地保存的信息。...AlarmManager简介 AlarmManager是Android中常用的一种系统级别的提示服务,在特定的时刻为我们广播一个指定的Intent。...简单的说就是我们设定一个时间,然后在该时间到来时,AlarmManager为我们广播一个我们设定的Intent,通常我们使用 PendingIntent。..."+ System.currentTimeMillis()); } }).start(); //通过AlarmManager定时启动广播 AlarmManager...alarmManager= (AlarmManager) getSystemService(ALARM_SERVICE); long triggerAtTime=SystemClock.elapsedRealtime
文章目录 一、AlarmManager 简介 二、使用 AlarmManager 保持 CPU 唤醒流程 ( 省电操作 ) 三、使用 WeakLock 保持 CPU 唤醒 代码示例 1、Service...可以一定程度上替代上述 WeakLock , 并且可以稳定每隔一段时间唤醒 CPU , 避免了 CPU 全程唤醒的情况 , 同时也降低了耗电量 ; 一、AlarmManager 简介 ---- AlarmManager...简介 : ① 激活时间 : AlarmManager 可以脱离于应用生命周期限制 , 每隔一段时间 , 定期执行任务 ; 即使应用没有执行 , 或者手机处于休眠状态 , 也可以触发执行操作 ; ② 间隔设定..., 然后继续休眠 , 可以极大降低资源消耗 ; 二、使用 AlarmManager 保持 CPU 唤醒流程 ( 省电操作 ) ---- 使用 AlarmManager 保持 CPU 处于唤醒状态 ,...比使用 WeakLock 更省电 ; 使用 AlarmManager 保持 CPU 唤醒流程 : ① 创建自定义广播接收者 : 这里为了简单 , 在 Service 中简单创建一个广播接收者 , 处理
AlarmManager AlarmManager是Android提供的一个全局定时器,其使用范围要大于Timer方式。...相比之下,AlarmManager利用系统的提醒服务定时发送广播,所以不但适用于线程间通信,而且也适用于进程间通信。...AlarmManager常用的启动方法有两个: set : 该方法用于设置一次性定时器。第一个参数表示定时器类型,第二个参数表示任务执行时间,第三个参数表示定时任务。...下面是Timer、CountDownTimer和AlarmManager三种定时器的示例代码: import java.util.Timer; import java.util.TimerTask;...alarmMgr = (AlarmManager)getSystemService(ALARM_SERVICE); alarmMgr.setRepeating( AlarmManager.RTC_WAKEUP
AlarmManager简介 AlarmManager实质是一个全局的定时器,是Android中常用的一种系统级别的提示服务,在指定时间或周期性启动其它组件(包括Activity,Service,BroadcastReceiver...本文将讲解一下如何使用AlarmManager实现定时提醒功能。...服务的对象 AlarmManager alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); //Intent设置要启动的组件...、 * AlarmManager.ELAPSED_REALTIME_WAKEUP、AlarmManager.RTC、 * AlarmManager.RTC_WAKEUP、...、 * AlarmManager.ELAPSED_REALTIME_WAKEUP、AlarmManager.RTC、 * AlarmManager.RTC_WAKEUP、
本文实例讲述了Android基于AlarmManager实现用户在线心跳功能。分享给大家供大家参考,具体如下: 在做即时通信或者其他检测是否在线等操作时要用到心跳。...比较常用的是AlarmManager全局定时器 去实现。 AlarmManager的使用机制有的称呼为全局定时器,有的称呼为闹钟。其实它的作用和Timer有点相似。...alarm=(AlarmManager)getSystemService(ALARM_SERVICE); alarm.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis...am=(AlarmManager)getSystemService(ALARM_SERVICE); //5秒一个周期,不停的发送广播 am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP...Timer这个方法是指定延迟多长时间以后开始周期性的执行task; AlarmManager的取消:(其中需要注意的是取消的Intent必须与启动Intent保持绝对一致才能支持取消AlarmManager
View.OnClickListener() { @Override public void onClick(View v) { AlarmManager...alarmManager = (AlarmManager) getSystemService(Service.ALARM_SERVICE); alarmManager.setRepeating...(AlarmManager.ELAPSED_REALTIME_WAKEUP, 0, 2000, pi); mStart.setEnabled(false); mStop.setEnabled...v) { mStart.setEnabled(true); mStop.setEnabled(false); AlarmManager...alarmManager = (AlarmManager) getSystemService(Service.ALARM_SERVICE); alarmManager.cancel
现在这里就有一个比较大的更新会影响到我们的应用功能,他就是AlarmManager。
有两种方法如下: 方法1.通过AlarmManager public class CrashHandler implements Thread.UncaughtExceptionHandler {...PendingIntent pendingIntent = PendingIntent.getActivity(context,0,intent,PendingIntent.FLAG_ONE_SHOT); AlarmManager...alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); alarmManager.set(AlarmManager.RTC
Android的闹钟实现机制, 需要调用AlarmManager.set()将闹铃时间记录到系统中,当闹铃时间到后,系统会给应用程序发送广播,我们只需要去注册广播接收器就可以了。...alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime()+5000, sender);...如果使用RTC_WAKEUP类型 应该调用System.currentTimeMillis()获取从1970.1.1号以来的时间在加上你设定的延迟时间 alarmManager.set(AlarmManager.RTC_WAKEUP...和AlarmManager.RTC_WAKEUP。...如果将type参数值设为AlarmManager.RTC,表示是一个正常的定时器,如果将type参数值设为AlarmManager.RTC_WAKEUP,除了有定时器的功能外,还会发出警报声(例如,响铃
mStart.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { AlarmManager...alarmManager = (AlarmManager) getSystemService(Service.ALARM_SERVICE); alarmManager.setRepeating...(AlarmManager.ELAPSED_REALTIME_WAKEUP, 0, 2000, pi); mStart.setEnabled(false); mStop.setEnabled...public void onClick(View v) { mStart.setEnabled(true); mStop.setEnabled(false); AlarmManager...alarmManager = (AlarmManager) getSystemService(Service.ALARM_SERVICE); alarmManager.cancel(pi
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE); am.set(AlarmManager.RTC,...AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE); am.cancel(sender);//取消闹钟 } 5.闹钟响是弹出的对化框并播放音乐用...AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); am.cancel(sender); } private void alarm...() { // 获取系统的闹钟服务 AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE); // 触发闹钟的时间..., triggerTime, op); // 指定时间重复执行闹钟 // am.setRepeating(AlarmManager.RTC,triggerTime,2000,op); } } 6.注:
3.AlarmManager的延迟的实现原理,是通过一个AlarmManager的set方法: IAlarmManager mService.set(mPackageName, type, triggerAtMillis...flags &= ~(AlarmManager.FLAG_WAKE_FROM_IDLE | AlarmManager.FLAG_ALLOW_WHILE_IDLE_UNRESTRICTED);...= Process.SYSTEM_UID) { flags &= ~AlarmManager.FLAG_IDLE_UNTIL; } if (windowLength == AlarmManager.WINDOW_EXACT...) { flags |= AlarmManager.FLAG_STANDALONE; } if (alarmClock !...= null) { flags |= AlarmManager.FLAG_WAKE_FROM_IDLE | AlarmManager.FLAG_STANDALONE; } else if
系统中发短信的权限,即在AndoridManifest.xml中添加如下内容 <uses-permissionandroid:name="android.permission.SEND_SMS"/ 第二,使用AlarmManager...AlarmManager有两个相似的用法: 1.在指定时常时候执行某项操作。 2.周期性的执行某项操作。...AlarmManager对象需要配合Intent对象使用,可以定时开启一个Activity,发送一个Broadcast,或者开启一个Service。...以下是核心代码片段: AlarmManager aManager=(AlarmManager)getSystemService(Context.ALARM_SERVICE); Intent intent...1.可以直接使用AlarmManager对象的set方法来设定具体的闹钟时间。 2.可以使用TImePicker的方式来设定时间,这种方式比较灵活。
alarmMgr.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, AlarmManager.INTERVAL_HALF_HOUR..., AlarmManager.INTERVAL_HALF_HOUR, alarmIntent); 在一分钟后唤醒设备并激活一个一次性(无重复)闹钟: private AlarmManager...interval // constants--in this case, AlarmManager.INTERVAL_DAY. alarmMgr.setInexactRepeating(AlarmManager.RTC_WAKEUP...20分钟唤醒一次: private AlarmManager alarmMgr; private PendingIntent alarmIntent; ... alarmMgr = (AlarmManager...这样可以让AlarmManager继续执行它的工作,且不需要用户手动重启闹钟。
//获取系统闹钟 AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); Intent intent =...ReportDetailsActivity.MyReceiver.class); pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, intent, 0); //开启定时任务 alarmManager.setRepeating...(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 1000, 5 * 1000, pendingIntent); 记得在manifeast 文件配置该广播...} } } } 在OnDestroy()中取消闹钟 @Override protected void onDestroy() { alarmManager.cancel
领取专属 10元无门槛券
手把手带您无忧上云