之前写的压力测试程序,在开发版和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. 现代程序设计——homework-01

    1.我的GitHub用户 首先,接触到现代程序设计这门课之后我才正式开始使用GitHub和它的客户端,以前都是去网站看代码.扒样例.我注册的账户名为:hennande.目前该账户中有我的第一份关于ho ...

  2. Java网络编程(UDP协议:发送端)

    package WebProgramingDemo; import java.io.IOException; import java.net.DatagramPacket; import java.n ...

  3. hdoj 2084 数塔

    数塔 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...

  4. CALayer精讲

    前言 CALayer包含在QuartzCore框架中,这是一个跨平台的框架,既可以用在iOS中又可以用在Mac OS X中.后面要学Core Animation就应该先学好Layer(层). 我们看一 ...

  5. iphone练习之手势识别(双击、捏、旋转、拖动、划动、长按)UITapGestureRecognizer

    首先新建一个基于Sigle view Application的项目,名为GestureTest;我的项目结构如下: 往viewController.xib文件里拖动一个imageView,并使覆盖整个 ...

  6. 转载有个小孩跟我说LINQ(重点讲述Linq中GroupBy的原理及用法)

    转载原出处: http://www.cnblogs.com/AaronYang/archive/2013/04/02/2994635.html 小孩LINQ系列导航:(一)(二)(三)(四)(五)(六 ...

  7. FreeModbus Slave RTU 精简版源代码【worldsing 笔记】

    RTU精简版本 测试环境:IAR for avr 5.40 + M128 目前只优化了ModBusPort.c和ModBusRTU.c ModBusPort.c     566 bytes of CO ...

  8. Android模拟器访问本地的apache tomcat服务

    1. 在官网http://tomcat.apache.org/上下载tomcat,根据自己的电脑下载相应的文件 2.将apache-tomcat-6.0.37-windows-x64.zip包解压到本 ...

  9. Sublime Text 3 安装插件管理 Package Control

    自动安装: 1.通过快捷键 ctrl+` 或者 View > Show Console 菜单打开控制台 2.粘贴对应版本的代码后回车安装 适用于 Sublime Text 3: import   ...

  10. Codeforces Round #322 (Div. 2) D. Three Logos 暴力

    D. Three Logos Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/581/problem ...