Android 关于休眠的几个坑点

转载 2013年12月04日 18:20:57

首先看一下Android Powermanager Class Overview,对Android的几种不同的休眠模式有个大致了解。

如果不进行特别的设置,Android会在一定时间后屏幕变暗,在屏幕变暗后一定时间内,约几分钟,CPU也会休眠,大多数的程序都会停止运行,从而节省电量。但你可以在代码中通过对Powmanager API的调用来设置不同的休眠模式。

Flag Value CPU Screen Keyboard
PARTIAL_WAKE_LOCK On* Off Off
SCREEN_DIM_WAKE_LOCK On Dim Off
SCREEN_BRIGHT_WAKE_LOCK On Bright Off
FULL_WAKE_LOCK On Bright Bright

如上表,最高等级的休眠是屏幕,键盘等,cpu都全部休眠。可以设置不同的模式,让其产生不同的休眠,比如让cpu保持运行。
设置代码如下:

  1. PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);  
  2. PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");  
  3. wl.acquire();  
  4.    ..screen will stay on during this section..  
  5. wl.release();  


 

我曾经遇到的几个坑点及解决:

1.向服务器轮询的代码不执行。

曾经做一个应用,利用Timer和TimerTask,来设置对服务器进行定时的轮询,但是发现机器在某段时间后,轮询就不再进行了。查了很久才发现是休眠造成的。后来解决的办法是,利用系统的AlarmService来执行轮询。因为虽然系统让机器休眠,节省电量,但并不是完全的关机,系统有一部分优先级很高的程序还是在执行的,比如闹钟,利用AlarmService可以定时启动自己的程序,让cpu启动,执行完毕再休眠。

2.后台长连接断开。

最近遇到的问题。利用Socket长连接实现QQ类似的聊天功能,发现在屏幕熄灭一段时间后,Socket就被断开。屏幕开启的时候需进行重连,但每次看Log的时候又发现网络是链接的,后来才发现是cpu休眠导致链接被断开,当你插上数据线看log的时候,网络cpu恢复,一看网络确实是链接的,坑。最后使用了PARTIAL_WAKE_LOCK,保持CPU不休眠。

3.调试时是不会休眠的。
让我非常郁闷的是,在调试2的时候,就发现,有时Socket会断开,有时不会断开,后来才搞明白,因为我有时是插着数据线进行调试,有时拔掉数据线,这时Android的休眠状态是不一样的。而且不同的机器也有不同的表现,比如有的机器,插着数据线就会充电,有的不会,有的机器的设置的充电时屏幕不变暗等等,把自己都搞晕了。其实搞明白这个休眠机制,一切都好说了。

 

转自 http://www.whoslab.me/blog/?p=474

Android 关于休眠的几个坑点

首先看一下Android Powermanager Class Overview,对Android的几种不同的休眠模式有个大致了解。 如果不进行特别的设置,Android会在一定时间后屏幕变暗,...

Android 关于休眠的几个坑点

首先看一下Android Powermanager Class Overview,对Android的几种不同的休眠模式有个大致了解。 如果不进行特别的设置,Android会在一定时间后屏幕变暗,在屏...

Android 关于休眠的几个坑点

首先看一下Android Powermanager Class Overview,对Android的几种不同的休眠模式有个大致了解。 如果不进行特别的设置,Android会在一定时间后屏幕变暗,...

android 通过Power事件实现休眠和唤醒

  • 2017年11月01日 15:03
  • 16.72MB
  • 下载

Android 不休眠 不锁屏

  • 2013年08月24日 11:09
  • 823KB
  • 下载

Android设置系统开机自动永不休眠

android4.2系统增永不休眠同时隐藏休眠选项 1. android\frameworks\base\packages\SettingsProvider\res\values\defaults.x...

android休眠与唤醒

  • 2012年04月26日 08:57
  • 2.26MB
  • 下载

Android推送、智能心跳解决方案、手机休眠对心跳的影响

参考: Android推送技术研究 Android实现推送方式解决方案 Android微信智能心跳方案 Android休眠问题探讨Android推送服务的几种实现方式一、推送方式基础知识:  ...

android 休眠和唤醒

  • 2017年11月01日 14:44
  • 16.74MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android 关于休眠的几个坑点
举报原因:
原因补充:

(最多只允许输入30个字)