之前写的压力测试程序,在开发版和5.0上面测试好好的,即使熄灭屏幕也会跑。我的程序主要是在Activity里面开启了一个thread,其中不断在界面上显示任务信息。换到6.0的

机器上面,发现一个现象,正常屏幕点亮的时候,可以正常工作,但是一旦屏幕关闭的时候,过了一段时间,点亮屏幕,发现界面也在更新,但是相比于过去的这段时间,就好像接续着屏幕刚刚关闭时候的状态,也就是屏幕关闭的时候程序没有跑。

联想到之前在Android官网上看到的Doze和standby的电源管理模式,跑去官网上又看了下资料。(http://developer.android.com/training/monitoring-device-state/doze-standby.html)。

doze休眠 和app standby待机模式是23也就是6.0才增加的。

当用户没有充电,关闭屏幕,手机也没有移动的时候,设备就会进入doze模式。在该模式下,系统会尝试通过限制网络访问以及CPU密集的服务来保存电量,同时会推迟同步、标准闹钟等工作。间断性地,系统会过一段时间退出doze模式,来让app完成推迟的活动任务,在这段维持的窗口,系统会运行所有的同步,工作,以及闹钟,让apps访问网络等工作。随着时间流逝,间隔期会越来越大。不过当用户一旦充电或者打开屏幕,移动手机的时候,那么系统会退出doze模式,所有的apps就会回到正常的活动。闹钟之类的在API23上面增加了新的API,不过最好还是用GCM,全称是Google Cloud Messaging。

App待机模式允许当用户没有积极地用它的时候系统决定一个app是闲散的。比如用户长久没有触摸屏幕,不过如果用户,
1.用户精准地启动app.
2.app在后台有进程(不管是活动还是后台服务,或者另一个activity或者后台服务)
3.app生成通知,比如用户看见屏幕锁或者通知托盘。
当用户插上电源设备,系统就会将app从待机状态释放,允许他们自由地访问网络和执行任务如同步。如果设备闲散了长时间,那么系统会运行app一天才访问一次网络。

google提供了解决方案是什么,GCM,不管是doze还是standby。

要是没有呢,那么android提供了电池优化的白名单模式,这里有一个优化和不优化选项,当然我们也可以在代码里面写。一个是权限REQUEST_IGNORE_BATTERY_OPTIMIZATIONS,一个是intent如 ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS。不过进白名单也有一些限制,一些即时消息,或者VOIP或者自动任务的APP等有不同的应用限制。

不过我对我做压力测试的应用添加了忽略优化,不知道是这个机器系统对安卓原生系统做了修改还是什么,当关闭屏幕的时候activity里面的线程还是停止。

后来意外地,google一下,发现对我执行任务的activity绑定的layout界面加上一个xml属性,screenOn,结果发现竟然可以了,虽然屏幕一直亮着,但是任务在跑着,就OK。
(http://stackoverflow.com/questions/9335908/how-to-prevent-the-screen-of-an-android-device-to-turn-off-during-the-execution)

Android 6.0doze和standby 的一点理解的更多相关文章

  1. Android开发艺术探索第五章——理解RemoteViews

    Android开发艺术探索第五章--理解RemoteViews 这门课的重心在于RemoteViews,RemoteViews可以理解为一种远程的View,其实他和远程的Service是一样的,Rem ...

  2. opencv笔记5:频域和空域的一点理解

    time:2015年10月06日 星期二 12时14分51秒 # opencv笔记5:频域和空域的一点理解 空间域和频率域 傅立叶变换是f(t)乘以正弦项的展开,正弦项的频率由u(其实是miu)的值决 ...

  3. 对socket的一点理解笔记

    需要学web service,但是在视频中讲解到了socket套接字编程.以前貌似课上老师有提过,只是没用到也感觉乏味.现在遇到,自己看了些博客和资料.记录一点理解,不知正确与否. 首先说这个名字,叫 ...

  4. iOS 的一点理解(一) 代理delegate

    做了一年的iOS,想记录自己对知识点的一点理解. 第一篇,想记录一下iOS中delegate(委托,也有人称作代理)的理解吧. 故名思议,delegate就是代理的含义, 一件事情自己不方便做,然后交 ...

  5. 关于web开发的一点理解

    对于web开发上的一点理解 1 宏观上的一点理解 网页从请求第地址 到获得页面的过程:从客户端(浏览器)通过地址 从soket把请求报文封装发往服务端   服务端通过解析报文并处理报文最后把处理的结果 ...

  6. angular.js的一点理解

    对angular.js的一点理解 2015-01-14 13:18 by MrGeorgeZhao, 317 阅读, 4 评论, 收藏, 编辑 最近一直在学习angular.js.不得不说和jquer ...

  7. RxSwift 入坑好多天 - 终于有了一点理解

    一.前言 江湖上都在说现在就要赶紧学 swift 了,即将是 swift 的天下了.在 api 变化不大的情况下,swift 作为一门新的语言,集众家之所长,普通编码确实比 oc 要好用的多了 老早就 ...

  8. rt-thread中动态内存分配之小内存管理模块方法的一点理解

    @2019-01-18 [小记] rt-thread中动态内存分配之小内存管理模块方法的一点理解 > 内存初始化后的布局示意 lfree指向内存空闲区首地址 /** * @ingroup Sys ...

  9. rt-thread中软件定时器组件超时界限的一点理解

    @2019-01-15 [小记] 对 rt-thread 中的软件定时器组件中超时界限的一点理解 rt_thread_timer_entry(void *parameter)函数中if ((next_ ...

随机推荐

  1. 【Hadoop学习】CDH5.2安装部署

    [时间]2014年11月19日 [平台]Centos 6.5 [工具]scp [软件]jdk-7u67-linux-x64.rpm CDH5.2.0-hadoop2.5.0 [步骤] 1. 准备条件 ...

  2. soliworks三维机柜布局(一)创建设备型号库

    以某直升机电气系统为例:为电路中的各个设备创建设备型号库是进行三维线束设计的前提之一(如下图所示:窗口中箭头所指的3D部件一定要为每个设备都添加) 设备只有添加了3d模型,在solidworks进行机 ...

  3. [OC Foundation框架 - 11] NSMutableDictionary

      void dicUse() { NSMutableDictionary *dic = [NSMutableDictionary dictionary]; Student *stu1 = [Stud ...

  4. 如果将synthesize省略,语义特性声明为assign retain copy时,自己实现setter和getter方法

    如果将synthesize省略,并且我们自己实现setter和getter方法时,系统就不会生成对应的setter和getter方法,还有实例变量 1,当把语义特性声明为assign时,setter和 ...

  5. BootStrap最常用的几个插件(V3.3.0版)

    1.标签页 <!-- Nav tabs --> <ul class="nav nav-tabs" role="tablist"> < ...

  6. Android 图片加载[常见开源项目汇总]

    该文主要是讲一下目前有哪些使用比较多的 图片加载开源项目,并简单介绍该如果使用 以及各开源项目之间有什么区别, 我们该如何去选择适合的开源项目应用到我们的项目中? 一.Android-Universa ...

  7. USACO Feb. 2012

    Moo 找规律 吧 第一个是很久以前自己写的递归 #include<stdio.h> __int64 n; __int64 dfs(__int64 l,__int64 r,__int64 ...

  8. Positioning(定位)

    Positioning(定位)    定位属性允许你为一个元素定位.它也可以将一个元素放在另一个元素后面,并指定一个元素的内容太大时,应该发生什么.    元素可以使用的顶部,底部,左侧和右侧属性定位 ...

  9. HDU4279(2012年天津网络赛---数论分析题)

    题目:Number 题意: 给出一个f(x),表示不大于x的正整数里,不整除x且跟x有大于1的公约数的数的个数.定义F(x),为不大于x的正整数里,满足f(x)的值为奇数的数的个数.题目就是求这个F( ...

  10. ECshop彻底去版权(同时适用于2.7.3)

    前台部分: 1:去掉头部TITLE部分的ECSHOP演示站 Powered by ecshop前者”ECSHOP演示站”在后台商店设置 – 商店标题修改后者” Powered by ecshop”打开 ...