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

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

简介 : ① 激活时间 : AlarmManager 可以脱离于应用生命周期限制 , 每隔一段时间 , 定期执行任务 ; 即使应用没有执行 , 或者手机处于休眠状态 , 也可以触发执行操作 ; ② 间隔设定...: 开发者可以设定触发任务执行的周期 , 该任务一般是通过发送延迟意图 PendingIntent 实现 ; ③ 广播接收者 : 一般使用 AlarmManager 定时发送 延迟意图 PendingIntent...给广播接收者 , 在广播接收者中启动服务 , 或者执行其它任务 ; ④ 降低资源消耗 : 如上述保持 CPU 唤醒 , 全程耗电 , 使用 AlarmManager 每隔一段时间 , 唤醒一次 , 执行任务...比使用 WeakLock 更省电 ; 使用 AlarmManager 保持 CPU 唤醒流程 : ① 创建自定义广播接收者 : 这里为了简单 , 在 Service 中简单创建一个广播接收者 , 处理..., 并设置每隔 50 秒发送一次广播 , 广播接收者接收到该意图 , 就会处理对应事件 ; // 获取闹钟管理器 mAlarmManager = (AlarmManager) getSystemService

98400

Android中AlarmManager+Notification实现定时通知提醒功能

对象设置动作,启动的是Activity还是Service,或广播!...参数详解 type:闹钟类型 ELAPSED_REALTIME:在指定的延时过后,发送广播,但不唤醒设备(闹钟在睡眠状态下不可用)。如果在系统休眠时闹钟触发,它将不会被传递,直到下一次设备唤醒。...ELAPSED_REALTIME_WAKEUP:在指定的延时过后,发送广播,并唤醒设备(即使关机也会执行operation所对应的组件) 。...如果在系统休眠时闹钟触发,它将不会被传递,直到下一次设备唤醒(闹钟在睡眠状态下不可用)。...PendingIntent pi:执行动作 是闹钟的执行动作,比如发送一个广播、给出提示等等。PendingIntent是Intent的封装类。

6.2K32
您找到你想要的搜索结果了吗?
是的
没有找到

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

适用于以固定间隔重复的alarm,比如每半小时触发一次。 (3)AlarmManager.RTC表示闹钟在睡眠状态下,这种类型的闹铃不会唤醒系统。...适用于在一天某个特定的时间点触发的alarm. (5)AlarmManager.POWER_OFF_WAKEUP表示闹钟在手机关机状态下也能正常进行提示功能(关机闹钟)。...关于PendingIntent pi 这是闹钟触发时所要求的执行动作,比如发送一个广播、给出提示等等。PendingIntent是Intent的封装类。...(依赖于在开机广播中进行闹钟注册set) -其他事件是否会异常触发闹钟响应?(依赖于闹钟广播接收器的条件配置) (3)其他高级用例,需要深入了解alarm实现原理与wakelock机制。...:alarm被触发,则启动该服务,服务实例位置在{}中声明 如果触发的是广播,则格式如: android +4m51s566ms running, 281 wakeups: +2m46s583ms

1.7K90

关于使用AlarmManager的注意事项

所以如果设置为 AlarmManager.RTC_WAKEUP ,那么可以通过修改手机系统的时间来提前触发定时事件。...,那么当前时间就为 System.currentTimeMillis() ; 第三个参数表示两次执行的间隔时间:这个参数没什么好讲的,一般为常量; 第四个参数表示对应的响应动作:一般都是去发送广播,然后在广播接收...所以,相应的代码就变成了这样: // pendingIntent 为发送广播 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {...但是,Google 又又又提供了新的方法 setExactAndAllowWhileIdle() 来解决在低电耗模式下的闹钟触发。 所以,Attention!...相关的代码又被改写为这样: // pendingIntent 为发送广播 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { alarmManager.setExactAndAllowWhileIdle

1.5K20

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

当本地蓝牙名称改变后会发送BluetoothAdapter.ACTION_LOCAL_NAME_CHANGED的广播,BluetoothSettings.java监听到广播后对mMyDevicePreference...localBluetoothAdapter.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE); 当设定了可检测性为固定的一段时间后则会设置一个闹钟,用于触发广播...,当所规定的时间到达时会触发广播,将手机蓝牙的可检测性关闭,如果想要永久的可以被检测到,则只需讲闹钟取消掉,不再触发广播即可 Intent intent = new Intent(INTENT_DISCOVERABLE_TIMEOUT...alarmManager = (AlarmManager) context.getSystemService (Context.ALARM_SERVICE);...中,该类为广播组件,专门用于开启或者关闭可检测性的闹钟计时、关闭可检测性。

48910

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

Timer+TimerTask的实质是利用开启Thread来触发定时任务,所以TimerTask实际上运行于非UI线程,也就无法直接操作UI。...另外倒计时器触发的onTick和onFinish都运行于非UI线程,所以与Timer一样,也得借助于Handler机制才能操作UI元素。...相比之下,AlarmManager利用系统的提醒服务定时发送广播,所以不但适用于线程间通信,而且也适用于进程间通信。...另外,由于是系统服务发送广播,因此只要再次打开APP,就会自动收到广播发来的定时任务。 AlarmManager常用的启动方法有两个: set : 该方法用于设置一次性定时器。...使用的是系统服务来发送广播,所以在注册广播接收器时需要注意以下几点: 1、要在AndroidManifest.xml中定义receiver; 2、代码中注册接收器必须使用Context.registerReceiver

2.9K10

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

广播消息常用来监听用户开启或关闭该权限的回调(API >= 31 才有此广播消息类型)。...// 触发时间(这里使用相对时间) val triggerTime = SystemClock.elapsedRealtime() + 5000 // 5秒后触发...动态广播当 App 进入缓存态时将会入队保存 在 Android14 中,我们使用 Context 上下文注册的动态广播接收器,可以在 App 进入缓存状态时,将已发送还未接收的广播放入到一个队列中保存...当 App 离开缓存状态(比如进入前台),则系统会传递所有已加入队列的广播。某些广播的多个实例可以合并为一个广播。...当然终止的顺序是最老使用的最先被终止。 3. App 只能终止自己的后台进程 从 Android14 开始,调用 killBackgroundProcesses() 时,只能终止自己应用的后台进程。

2.2K10

笔记58 | Android闹钟

因此在我们使用闹钟时,请牢记下面的最佳实践建议: 对任何由重复闹钟触发的网络请求添加一定的随机性(抖动): 在闹钟触发时做一些本地任务。...它具有下列属性: 闹钟类型(后续章节中会展开讨论); 触发时间。如果触发时间是过去的某个时间点,闹钟会立即被触发; 闹钟间隔时间。...具体步骤如下: 1.在应用的Manifest文件中设置RECEIVEBOOTCMPLETED权限,这将允许你的应用接收系统启动完成后发出的ACTIONBOOTCOMPLETED广播(只有在用户至少将你的应用启动了一次后...uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> 2.实现BoradcastReceiver用于接收广播...* 1, alarmIntent); } } 广播: package com.example.alarmtest; import android.content.BroadcastReceiver

1.6K30

9.服务

因此,获取一个 AlarmManager的实例就可以写成: AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE...RTC表示让定时任务的触发时间从 1970年 1月 1日 0点开始算起,但不会唤醒 CPU。RTC_WAKEUP同样表示让定时任务的触发时间从 1970年 1月 1日 0点开始算起,但会唤醒 CPU。...然后看一下第二个参数,这个参数就好理解多了,就是定时任务触发的时间,以毫秒为单位。...这样当定时任务被触发的时候,广播接收器的 onReceive()方法就可以得到执行。...开启线程和自动停止于一身,IntentService还是博得了不少程序员的喜爱 } 遇到的错误: //这是在服务里,接收activity传递过来的数据,每次用户点击ListActivity当中的一个条目时

800110

html复选框选中与选中触发事件的方法

今天,当制作一个不需要from表单的复选框来提交数据的小函数时,需要在复选框被选中或选中的情况下修改一些后台数据。我想到了用js代码来监控复选框的状态,并将实时数据发送到后台。...复选框选择和取消选择触发事件的方法。 Jq代码_ _点击复选框触发事件我是复选框。 $('#isbox ')。单击(函数(){ 如果($(这个)。...; } }); 本机JS代码_ _单击复选框触发事件。 例如:我是复选框。...功能检查(e) 如果(已检查){ console . log(“checked”); }否则{ Console.log('选中'); } } 例如:我是复选框。...onclick=function(){ if(this.checked){ console . log(“checked”); }否则{ Console.log('选中'); } }; PS:上面两个原生

4.5K40

Android基于AlarmManager实现用户在线心跳功能示例

比较常用的是AlarmManager全局定时器 去实现。 AlarmManager的使用机制有的称呼为全局定时器,有的称呼为闹钟。其实它的作用和Timer有点相似。...下面的代码详细的介绍了两种定时方式的使用: (1)在指定时长后执行某项操作 //操作:发送一个广播广播接收后Toast提示定时操作完成 Intent intent =new Intent(Main.this...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

1.5K20

Android面试题(四大组件篇)

onsavedinstance(Bundle savedinstancestate)方法的触发时机,其典型的情景是按home键或者切换activity,这样的activity可能被销毁的场合,但是按back...Q:AlarmManager能实现定时的原理? AlarmManager提供对系统警报服务的访问。这些允许您在将来的某个时间点运行应用程序。...静态注册无需担忧广播接收器是否被关闭,只要设备是开启状态,广播接收器也是打开着的。也就是说哪怕app本身启动,该app订阅的广播触发时也会对它起作用。...(1)android平台提供了ContentProvider使一个应用程序的指定数据提供给其他应用程序。其他应用可以通过ContentResolver类从该内容提供者中获取或存入数据。...(5)ContentProvider使用URI来唯一标识其数据,这里的URI以content://作为前缀,表示该数据由ContentProvider来管理。

86720
领券