android 6.0 以上在doze模式精确定时
public static void start12hAlarm() {
int seconds = TIMERLENGTH;
ECMLog.i_ecms(CLASS_TAG, " start12hAlarm is called ." );
AlarmManager manager = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(mContext, cls);
intent.setAction(mAction);
PendingIntent pendingIntent = PendingIntent.getBroadcast(mContext, 0,intent, PendingIntent.FLAG_UPDATE_CURRENT);
long triggerAtTime = SystemClock.elapsedRealtime();
manager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, triggerAtTime + seconds* 1000, pendingIntent);
if (Build.VERSION.SDK_INT >= 23) {
manager.setExactAndAllowWhileIdle(AlarmManager.ELAPSED_REALTIME_WAKEUP, triggerAtTime + seconds* 1000, pendingIntent);
} else if (Build.VERSION.SDK_INT >= 19) {
manager.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP, triggerAtTime + seconds* 1000, pendingIntent);
} else {
manager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, triggerAtTime + seconds* 1000, pendingIntent);
}
}
public static void stop12hAlarm() {
ECMLog.i_ecms(CLASS_TAG, " stop12hAlarm is called ." );
AlarmManager manager = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(mContext, cls);
intent.setAction(mAction);
PendingIntent pendingIntent = PendingIntent.getBroadcast(mContext, 0,intent, PendingIntent.FLAG_UPDATE_CURRENT);
manager.cancel(pendingIntent);
}
定时器到了发送广播:在广播中进行业务操作
/*
* 文件名:MainBroadcastReceiver.java
* 版权:版权所有 (C) 中国电科30所三部
* 描述:
* 修改人: chen.qiang
* 修改时间:2015/10/16
* 修改内容:新增
*/
package com.cetcs.ecmapplication.ecms; import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent; import com.cetcs.ecmapplication.mqtt.Model;
import com.cetcs.ecmcommon.ECMLog;
import com.cetcs.jniencardmanager.JniEnCardManager; /**
* <功能简述>
* <功能详述>
*
* @author liucheng
* @version 0.1, 2016/9/5
*/
public class AlarmEventReceiver extends BroadcastReceiver {
private static String CLASS_TAG = "AlarmEventReceiver";
@Override
public void onReceive(Context context, Intent intent) {
ProcessBroadcast server = new ProcessBroadcast(context);
String action = intent.getAction();
ECMLog.i_ecm(CLASS_TAG ," receive a broadcast@@@@: " + action);
if(server != null) {
server.startSecApps();
}
if(action == null){
return;
}
Utils.startEcmsByBroadcast(context);
if("android.intent.action.12h_alarm".equals(intent.getAction())){
ECMLog.i_ecm(CLASS_TAG ," onReceive 12h_alarm");
if(server != null){
server.BootReportAlarmBroadcast();
}
}
if(BootReportAgent.mSCSAction.equals(intent.getAction())){
ECMLog.i_ecm(CLASS_TAG ,"onReceive android.intent.action.scs_socket alarm");
Model.getInstance().getGlobalThreadPool().execute(new Runnable() {
@Override
public void run() {
try {
int rst = JniEnCardManager.getInstance().isScsSoketException();
ECMLog.i_ecm(CLASS_TAG ,"onReceive isScsSoketException() is :"+rst);
} catch (Exception e) {
e.printStackTrace();
ECMLog.i_ecm(CLASS_TAG ,"onReceive isScsSoketException() exception :"+ e.getMessage());
}
}
}); }
}
}
android 6.0 以上在doze模式精确定时的更多相关文章
- Android 5.0 版本 USB 调试模式打开方法
Android 4.2 版本 USB 调试模式打开方法 1. 进入“设置”页面,点击“关于平板电脑”.见下图红色方框. 2. 疯狂点击“版本号”,见下图红色方框,直到出现“您现在处于开发者模式!” ...
- Android 7.0 Nougat牛轧糖 发布啦
Android 7.0 Nougat牛轧糖 发布啦 Android 7.0 Nougat 牛轧糖于本月发布了. 从官方blog里可以了解到这个版本的新特性. Android 7.0 从2016年8月正 ...
- Android 6.0(棉花糖)新特性
1.支持4K显示 Android 6.0本身已经支持4K显示,会通过一定优化形式使4K内容更加清晰. 2. 启动验证 (更完整的应用权限管理) Android 6.0在开机时会自动运行验证代码,检测设 ...
- Android基础知识之屏幕兼容模式
原文:http://android.eoe.cn/topic/android_sdk 注意:如果你在低于安卓3.0的版本上进行应用开发,但其在更大屏幕的设备(比如平板电脑)上显示正常时,你就需要禁用屏 ...
- Android 5.0 最应该实现的8个期望
毫无疑问,Android 5 将是令人兴奋的操作系统,因为 Android4.0 至 4.4 版本之间并没有显著的差异,显然谷歌会在 5.0 版本中进行一些较大幅度的革新.那么,代号为“柠檬芝士蛋糕” ...
- Android Doze模式启用和恢复
从Android 6.0(API level 23)开始,Android提出了两个延长电池使用时间的省电特性给用户.用户管理可以在没有充电的情况下管理app的行为.当用户一段时间没有使用手机的时候,D ...
- Android Doze模式源码分析
科技的仿生学无处不在,给予我们启发.为了延长电池是使用寿命,google从蛇的冬眠中得到体会,那就是在某种情况下也让手机进入类冬眠的情况,从而引入了今天的主题,Doze模式,Doze中文是打盹儿,打盹 ...
- 微信5.0 Android版飞机大战破解无敌模式手记
微信5.0 Android版飞机大战破解无敌模式手记 转载: http://www.blogjava.net/zh-weir/archive/2013/08/14/402821.html 微信5.0 ...
- android 7.0 学习笔记(一)
导读 增强的Doze模式 后台优化 Data Saver 一.增强的Doze模式 Android N对Android M引进的Doze模式进行了进一步的增强,变化体现在两个方面.一方面是降低了进入Do ...
随机推荐
- java方式实现堆排序
一.堆排序和堆相关概念描述 堆排序是指利用堆这种数据结构所设计的一种排序算法.堆是一个近似完全二叉树的结构,并同时满足堆的性质:即子结点的值总是小于(或者大于)它的父节点,若子结点的值总是小于它的父节 ...
- 04 . Nginx的Rewrite重写
Rewrite简介 # Rewrite对应URL Rewrite,即URL重写,就是把传入web的请求重定向到其他URL的过程. # 当运维遇到要重写情况时,往往是要程序员把重写规则写好后,发给你,你 ...
- 本地安装JDK1.7和1.8,可相互快速切换
1.JDK官网下载jdk1.7和jdk1.8 https://www.oracle.com/java/technologies/javase-jdk8-downloads.html 2.将jdk1.7 ...
- SpringBoot—单元测试模板(controller层和service层)
介绍 概述 在开发过程中,我们经常会一股脑的写各种业务逻辑,经常等全部大功告成的时候,打个jar包放环境里跑跑看看能不能通,殊不知在各个业务方法中已经漏洞百出,修复一个打一个包,再继续修复,这种效 ...
- Rocket - util - ReduceOthers
https://mp.weixin.qq.com/s/gbR5fuDbE_nUFVxw-p4rsA 简单介绍ReduceOthers的实现. 1. 基本介绍 输入一组Bool元素 ...
- WebServer远程部署
通过远程部署获取webshell并不属于代码层次的漏洞,而是属于配置性错误漏洞. 1.Tomcat tomcat是一个jsp/Servlet容器 端口号:8080 攻击方法: 默认口令.弱口令,爆破, ...
- 【RT-Thread笔记】BH1750软件包的使用
BH1750简介 BH1750是一种用于两线制串行总线接口的16位数字型光强度传感器集成电路.利用它的高分辨率可以探测较大范围的光强度变化.(1lx~65535lx). 创建工程.验证 在RT-Thr ...
- Java实现 LeetCode 767 重构字符串(ASCII的转换)
767. 重构字符串 给定一个字符串S,检查是否能重新排布其中的字母,使得两相邻的字符不同. 若可行,输出任意可行的结果.若不可行,返回空字符串. 示例 1: 输入: S = "aab&qu ...
- Java实现 LeetCode 347 前 K 个高频元素
347. 前 K 个高频元素 给定一个非空的整数数组,返回其中出现频率前 k 高的元素. 示例 1: 输入: nums = [1,1,1,2,2,3], k = 2 输出: [1,2] 示例 2: 输 ...
- Java实现 LeetCode 327 区间和的个数
327. 区间和的个数 给定一个整数数组 nums,返回区间和在 [lower, upper] 之间的个数,包含 lower 和 upper. 区间和 S(i, j) 表示在 nums 中,位置从 i ...