首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android开发笔记(五十)定时器AlarmManager

Timer+TimerTask的实质是利用开启Thread来触发定时任务,所以TimerTask实际上运行于非UI线程,也就无法直接操作UI。...另外倒计时器触发的onTick和onFinish都运行于非UI线程,所以与Timer一样,也得借助于Handler机制才能操作UI元素。...相比之下,AlarmManager利用系统的提醒服务定时发送广播,所以不但适用于线程间通信,而且也适用于进程间通信。...另外,由于是系统服务发送广播,因此只要再次打开APP,就会自动收到广播发来的定时任务。 AlarmManager常用的启动方法有两个: set : 该方法用于设置一次性定时器。...如果已存在描述的PendingIntent,则更新而不是取消该任务。 使用示例 下面是两种定时方式的效果图: ?

3.1K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【Android 电量优化】电量优化 ( 使用 AlarmManager 保持 CPU 唤醒 )

    代码示例 2、AndroidManifest.xml 服务配置 四、源码及资源下载 参考 Google 官方文档 : 优化电池续航时间 管理设备唤醒状态 使设备保持唤醒状态 设置重复闹铃时间 上一篇博客...【Android 电量优化】电量优化 ( 唤醒锁定 | 使用 WeakLock 保持服务唤醒 | 屏幕唤醒 ) 中 , 使用 WeakLock 保持 CPU 唤醒 , 全程 CPU 都处于工作状态 ,..., 或者手机处于休眠状态 , 也可以触发执行操作 ; ② 间隔设定 : 开发者可以设定触发任务执行的周期 , 该任务一般是通过发送延迟意图 PendingIntent 实现 ; ③ 广播接收者 : 一般使用...AlarmManager 定时发送 延迟意图 PendingIntent 给广播接收者 , 在广播接收者中启动服务 , 或者执行其它任务 ; ④ 降低资源消耗 : 如上述保持 CPU 唤醒 , 全程耗电...-- AlarmManager 保持 CPU 唤醒的 Service 服务 --> <service android:name=".AlarmManagerService

    1.2K00

    Android应用保活全攻略:30个实用技巧助你突破后台限制

    通过创建一个Job,设置触发条件,然后将Job提交给JobScheduler。当触发条件满足时,JobScheduler会启动应用。 5....使用AlarmManager定时唤醒 使用AlarmManager定时唤醒应用。通过设置一个定时任务,当到达指定时间时,使用PendingIntent启动应用。...需要注意的是,从Android 6.0开始,AlarmManager的行为受到了限制,当设备处于低电量模式时,定时任务可能会被延迟。 10....关注Android开发者文档和官方博客 Android开发者文档和官方博客是获取保活策略和系统更新信息的重要途径。关注这些资源,以便了解最新的系统特性、开发者指南和最佳实践。 28....根据用户的反馈,调整保活策略,以实现最佳的用户体验。 30.

    3.6K21

    Android14 适配之——现有 App 安装到 Android14 手机上需要注意些什么?

    相反,如果是要设置 30min 后或者明天下午 2 点的操作,则建议使用; 2)安排在后台进行的一些操作,例如:下载更新App或者上传日志等。...RequiresApi(Build.VERSION_CODES.S) private fun scheduleAlarm() { // 创建一个 Intent,用于指定定时任务触发时要执行的操作...// 触发时间(这里使用相对时间) val triggerTime = SystemClock.elapsedRealtime() + 5000 // 5秒后触发...其他应用可以查询媒体库以获取这些信息,以便在自己的应用中显示该文件或与之交互。...用户体验方面 5.1 可单独对照片和视频访问权限进行授权 如果你的 App 以 Android13 或更高版本为目标平台(即 targetSdkVersion >= 33),且在 Android14 的设备上运行时

    5K10

    Go语言实现的WebSocket

    WebSocket是HTML5的重要特性,它实现了基于浏览器的远程socket,它使浏览器和服务器可以进行全双工通信,许多浏览器Firefox、Google Chrome和Safari都已对此做了支持...简单的说运营商的网关需要维护一个外网 IP、端口到内网 IP、端口的对应关系,以确保内网的手机可以跟 Internet 的服务器通讯。...AlarmManager 这篇文章有介绍怎么使用AlarmManager安卓网络和电量优化 AlarmManager 是 Android 系统封装的用于管理 RTC 的模块,RTC (Real Time...WebSocket 原理 WebSocket的协议:在第一次handshake通过以后,连接便建立成功,其后的通讯数据都是以”\x00″开头,以”\xFF”结尾。...27 console.log("收到消息后触发 message received: " + e.data); 28 } 29 //发生错误的时候触发

    3.8K20

    Android闹钟开发与展示Demo

    一、闹钟的设置不需要数据库,但是展示闹钟列表的时候需要,所以需要数据库: public class MySQLiteOpenHelper extends SQLiteOpenHelper{ public..."); } //调用此方法时,判断数据库是否存在,不存在则创建 调用OnCreate方法,存在则不调,直接放回数据库对象 sqlitedb = this.getWritableDatabase...} 3、闹钟的设置:   调用TimePickerDialog实现,这是一个时间选择器,通过监听其选择的时间进行闹钟设置;   闹钟设置的主要代码如下: 1.获取系统服务...创建PendingIntent,其中AlarmReceiver.class是闹钟触发的实现动作。   ...(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pi); 4、闹钟触发是震动和响铃,在 AlarmReceiver中实现: import

    1.6K20

    Android M doze特性预研

    手机处于静止状态一段时间 doze模式下应用受限功能 网络访问被禁用,但是一些高优先级的GCM推送消息将会被放行 Wake locks被忽略 Alarms被屏蔽,除非调用setAlarmClock()和AlarmManager.setAndAllowWhileIdle...内部定义的状态切换事件ACTION_STEP_IDLE_STATE由AlarmManager类成员根据预设时间触发,mReceiver接收到事件后调用stepIdleStateLocked()完成状态切换...和IDLE_MAINTENAEC之前切换,后者会允许应用程序做一些事情(时间在5~10min) (b)接收到某些外部事件则有可能转换为ACTIVE状态,包括充电/亮屏/运动等,以mReceiver处理的...接口方面 系统提供了接口IDeviceIdleController,DeviceIdleController内部类BinderSevice实现该接口,在启动时以“deviceidle”的名字将后者实例注册到系统中...主动退出doze 最后探讨下应用如何“悄悄”地使系统退出doze模式。根据doze的条件,在没有充电的情况下,只能通过亮屏或震动等外部事件触发系统退出IDLE状态。

    2.1K91

    美团动态线程池实践思路开源项目(DynamicTp),线程池源码解析及通知告警篇

    看过源码的小伙伴会发现,ThreadPoolExecutor类里的方法大量有同时需要获取或更新池状态和池当前线程数的场景,放一个原子变量里,可以很好的保证数据的一致性以及代码的简洁性。...*** 核心参数变更通知 对应配置中心的监听端监听到配置变更后,封装到DtpProperties中然后交由DtpRegistry类中的refresh()方法去做配置更新,同时通知时会高亮显示有变更的字段...-1.image] *** 队列容量告警 容量使用率 = queueSize / queueCapacity 服务启动后会开启一个定时监控任务,每隔一定时间去计算任务队列的使用率,达到配置的threshold...阈值后会触发一次告警,告警间隔内多次触发不会发送告警通知 [d65151e3e9ca460eac18f30ea6be05d3~tplv-k3u1fbpfcp-zoom-1.image] *** 拒绝策略告警...且判断如果周期累计值达到配置的阈值,则会触发一次告警通知(同时重置周期累加值为0及上次告警时间为当前时间),告警间隔内多次触发不会发送告警通知 @Override public void execute

    1.2K71

    Tip | Android的Service相关知识提炼

    下面学习AlarmManager系统服务,实现一个后台定时任务 调用AlarmManager的set()方法就可以设置一个定时任务, set()有三个参数(工作类型,定时任务触发的时间,PendingIntent...2)定时任务触发的时间:以毫秒为单位,传入值和第一个参数对应关系: ?...这样当定时任务被触发的时候, 广播接收器中的onReceive()方法即可得到执行, 在onReceive()方法我们可以再次启动Service, 同时编写任务执行代码块; 实战使用时, 可以在新建的继承...同时在MyReceiver的onReceive()方法中 我们可以添加编写任务执行代码块; 另外,从Android 4.4版本开始, 由于系统在耗电性方面进行了优化使得Alarm任务的触发时间会变得不准确...如果一定要求Alarm任务的执行时间精确, 把AlarmManager的setExact()方法替代set()方法就可以了。

    68750

    9.服务

    绑定服务时,会触发服务的onBind方法,此方法会返回一个Ibinder的对象给MainActivity,通过这个对象访问服务中的方法 publicclassLeaderServiceextendsService...当然有时候你也可能不仅仅是为了防止服务被回收掉才使用前台服务的,有些项目由于特殊的需求会要求必须使用前台服务,比如说墨迹天气,它的服务在后台更新天气数据的同时,还会在系统状态栏一直显示当前的天气信息...因此,获取一个 AlarmManager的实例就可以写成: AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE...然后看一下第二个参数,这个参数就好理解多了,就是定时任务触发的时间,以毫秒为单位。...,所以重写onDestroy()方法,在这里也打印了一行日志,以证实服务是不是停止掉了。

    885110

    笔记58 | Android闹钟

    ,使用它来触发事件或行为; 帮助你的应用最小化资源需求,你可以使用闹钟调度你的任务,来替代计时器或者长时间连续运行的后台服务。...它对于你的应用来说或许不是一种最好的选择,特别是当你想要触发网络操作的时候。设计不佳的闹钟会导致电量快速耗尽,而且会对服务端产生巨大的负荷。...当我们从服务端同步数据时,往往会在应用不被使用的时候时被唤醒触发执行某些操作。此时你可能希望使用重复闹钟。...比如:同步的触发可能基于一条“新数据”提示消息,而消息的产生可以基于服务器或设备,用户的操作(或者没有操作),每天的某一时刻等等。...每隔在30分钟后唤醒设备以激活闹钟: // Hopefully your alarm will have a lower frequency than this!

    1.8K30

    Android4.42-Settings源码分析之蓝牙模块Bluetooth整体实现(总)

    switch状态 注册过滤BluetoothAdapter.ACTION_STATE_CHANGE的广播,当蓝牙状态发生变化时更新switch状态 为switch添加监听事件,更改本地蓝牙适配器,当本地蓝牙适配器发生改变后更新...蓝牙可检测性---summary的更新显示 对于summary的显示更新的操作在BluetoothDiscoverableEnabler.java中完成,该类专用于更新summary以及处理mMyDevicePreference...localBluetoothAdapter.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE); 当设定了可检测性为固定的一段时间后则会设置一个闹钟,用于触发广播...,当所规定的时间到达时会触发广播,将手机蓝牙的可检测性关闭,如果想要永久的可以被检测到,则只需讲闹钟取消掉,不再触发广播即可 Intent intent = new Intent(INTENT_DISCOVERABLE_TIMEOUT...alarmManager = (AlarmManager) context.getSystemService (Context.ALARM_SERVICE);

    60610

    Android M 特性 Doze and App Standby模式详解

    网络连接会被禁止 Wake Lock会被屏蔽 AlarmManager定时任务延迟到下一个maintenance window进行处理,除非使用AlarmManager提供的方法:setAndAllowWhileIdle...运行以下adb命令使系统进入Doze模式: $ adb shell dumpsys battery unplug $ adb shell dumpsys deviceidle step 6....除非触发以下任意条件,应用程序将退出App Standby状态: 1. 用户主动启动该App; 2....接收消息,一个应用服务器从XMPP连接服务器接收邮件,然后执行以下操作: 1、解析消息头,以验证客户端应用程序发送的信息; 2、发送“确认”的XMPP连接服务器以确认收到该消息; 3、任选解析该消息有效载荷...应用程序还可以使用AREQUEST_IGNORE_BATTERY_OPTIMIZATIONS 权限来触发一个系统对话来让用户添加到白名单里,而无需进入设置界面去设置。

    7.6K11

    Android基础总结(8)——服务

    也就是说,如果想要更新应用程序中的UI元素,则必须在主线程中进行,否则就会出现异常。...以调用Context.bindService()方法建立,以调用Context.unbindService()关闭。...7 另外根据IntentService的特性,这个服务在运行结束后应该是会自动停止的,所以我们又重写了onDestroy()方法,在 8 这里也打印l一行日志,以证实是不是停止掉了...因此,获取一个AlarmManager的实例就可以写成: 1 AlarmManager manager=(AlarmManager)getSystemService(Context.ALARM_SERVICE...第二个参数就是定时任务触发的时间,以毫秒为单位。如果第一个参数使用的是ELAPSED_REALTIME或ELAPSED_REALTIME_WAKEUP则这里传入开机至今的时间在加上延迟执行的时间。

    1.7K80

    边开发边测试--故事从闹钟讲起

    适用于以固定间隔重复的alarm,比如每半小时触发一次。 (3)AlarmManager.RTC表示闹钟在睡眠状态下,这种类型的闹铃不会唤醒系统。...表示闹钟时间到时系统会触发这个PendingIntent所代表的事件(如启动服务/activity/发广播) 然而需要注意的是,如果是通过启动服务来实现闹钟提示的话,PendingIntent对象的获取就应该采用...这里以手机管家企业红包闹钟的功能为例(简单讲就是到预设的时间则触发红包提醒事件),介绍几个特别一点的姿势。 1....Android4.4之后,通过Batch机制,以时间为维度聚合了alarm来触发,减少系统耗电。...:alarm被触发,则启动该服务,服务实例位置在{}中声明 如果触发的是广播,则格式如: android +4m51s566ms running, 281 wakeups: +2m46s583ms

    1.9K90

    android AlarmManager讲解

    Android系统闹钟定时功能框架,总体来说就是用数据库存储定时数据,有一个状态管理器来统一管理这些定时状态的触发和更新。...在Andriod系统中实现定时功能,最终还是要用到系统提供的AlarmManager,只是当一个定时完成后怎么继续处理,或者中间怎么更新定时的时间或者状态,像闹钟这种应用程序,每天重复定时,或者一周选择其中的几天...从上面也可以看出,Alarm类作为定时的基础数据结构,主要是封装了一些数据库操作,完成增删改查功能。...SILENT_STATE,alarm被激活,但是不需要显示任何东西,下一个状态是LOW_NOTIFICATION_STATE; LOW_NOTIFICATION_STATE,这个状态表示alarm离触发的时间不远了...这个状态会一直持续到HIGH_NOTIFICATION_STATE; HIGH_NOTIFICATION_STATE,这个状态和LOW_NOTIFICATION_STATE相似,但不允许用户隐藏通知,负责触发

    1.9K50
    领券