Android Service待机/睡眠时运行
来源:互联网 发布:简单好听的淘宝会员名 编辑:程序博客网 时间:2024/06/03 02:51
在Android中,申请WakeLock可以让你的进程持续执行即使手机进入睡眠模式,比较实用的是比如后台有网络功能,可以保证操作持续进行.
方法: 在操作之前加入
PowerManager pm = (PowerManager)mContext.getSystemService(Context.POWER_SERVICE);
wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,Constants.TAG);
wakeLock.acquire();
别忘了在操作完毕之后释放掉
if (wakeLock != null) {
wakeLock.release();
wakeLock = null;
}
试了下,找不到Constants类,Constants.TAG应该是一个String值,因填写Service名
我在Activity启动Service前 以及在Service onCreate() 两处 分别尝试插入这段代码,并测试。
模拟器似乎是无法模拟待机/睡眠状态的,故无法测试。
在真机上测试 (测试方法为,不断通过wifi发送请求到局域网的PC的tomcat上,tomcat输出请求时间和ip)
联想乐phone(Android1.6)均无法持续运行,表现为,屏幕一黑(进入待机)就停止请求,按任意键解锁后又继续请求。
我的milestone(Android2.0) 在Activity启动Service前插入可以持续运行。
但是在使用gprs网络时似乎仍有问题,有待进一步测试
Android提供了现成android.os.PowerManager类,该类用于控制设备的电源状态的切换.
该类对外有三个接口函数:
void goToSleep(long time);//强制设备进入Sleep状态
Note:
尝试在应用层调用该函数,却不能成功,出现的错误好象是权限不够,但在Framework下面的Service里调用是可以的.
newWakeLock(int flags, Stringtag);//取得相应层次的锁
flags参数说明:
PARTIAL_WAKE_LOCK: Screen off, keyboard light off
SCREEN_DIM_WAKE_LOCK: screen dim, keyboard light off
SCREEN_BRIGHT_WAKE_LOCK: screen bright, keyboard lightoff
FULL_WAKE_LOCK: screen bright, keyboard bright
ACQUIRE_CAUSES_WAKEUP: 一旦有请求锁时强制打开Screen和keyboard light
ON_AFTER_RELEASE: 在释放锁时reset activity timer
Note:
如果申请了partial wakelock,那么即使按Power键,系统也不会进Sleep,如Music播放时
如果申请了其它的wakelocks,按Power键,系统还是会进Sleep
void userActivity(long when,boolean noChangeLights);//User activity事件发生,设备会被切换到Fullon的状态,同时Reset Screen off timer.
Sample code:
PowerManager pm =(PowerManager)getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, “My Tag”);
wl.acquire();
…….
wl.release();
Note:
1. 在使用以上函数的应用程序中,必须在其Manifest.xml文件中加入下面的权限:
<uses-permissionandroid:name="android.permission.WAKE_LOCK" />
<uses-permissionandroid:name="android.permission.DEVICE_POWER"/>
2. 所有的锁必须成对的使用,如果申请了而没有及时释放会造成系统故障.如申请了partialwakelock,而没有及时释放,那系统就永远进不了Sleep模式.
来源:http://blog.csdn.net/laowenchao/article/details/5848891
- Android Service待机/睡眠时运行
- Android Service待机/睡眠时运行
- 待机、休眠、睡眠
- 待机、休眠、睡眠(转)
- 睡眠和休眠和待机
- 待机、睡眠、休眠的区别
- 系统休眠、待机和睡眠
- 重启机器/待机/睡眠等状态
- Windows中的待机,休眠,睡眠的区别!
- 系统待机、休眠、睡眠的区别
- 待机 休眠 睡眠的介绍 与区别
- Windows7无法睡眠(待机)的问题
- 电脑休眠、睡眠、待机的区别
- 待机、睡眠和休眠的区别
- 待机、睡眠和休眠的区别
- 待机、休眠、睡眠的区别(整理)
- Android动画 之 在Activity启动时运行
- iPod的三种状态:开机,待机,深度睡眠
- 设计模式六大原则-------单一职责原则
- 博客转移到cnblogs
- Android 配置 之 AndroidManifest.xml 出错 Unable to instantiate activity ComponentInfo
- Javascript中模仿块级作用域
- 开源框架系列:.NET Enterprise CMS Framework --- RapidWebDev 介绍
- Android Service待机/睡眠时运行
- 什么是集群服务,集群服务的配置
- 数字图像处理之打开本地BMP位图
- EasyMock最佳实践
- HIVE中的自定义函数 .
- 开源框架系列:.NET Enterprise CMS Framework --- RapidWebDev 入门
- 8086寄存器详解
- java如何通过json读取嵌套的json对象
- 话话话