Android(安卓)Service待机/睡眠时运行
16lz
2021-01-26
在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(Android 1.6)均无法持续运行,表现为,屏幕一黑(进入待机)就停止请求,按任意键解锁后又继续请求。
我的milestone(Android2.0) 在Activity启动Service前插入 可以持续运行。
但是在使用gprs网络时似乎仍有问题,有待进一步测试
Android提供了现成android.os.PowerManager类,该类用于控制设备的电源状态的切换. 该类对外有三个接口函数: void goToSleep(long time); //强制设备进入Sleep状态 Note: 尝试在应用层调用该函数,却不能成功,出现的错误好象是权限不够, 但在Framework下面的Service里调用是可以的. newWakeLock(int flags, String tag);//取得相应层次的锁 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 light off 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事件发生,设备会被切换到Full on的状态,同时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-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.DEVICE_POWER" /> 2. 所有的锁必须成对的使用,如果申请了而没有及时释放会造成系统故障.如申请了partial wakelock,而没有及时释放,那系统就永远进不了Sleep模式.
2010-08-18 09:26:31 发表于我的新浪博客
更多相关文章
- 裁判文书App(2020最新版) 逆向过程分析
- android SQLite数据库的增删改查以及事务的单元测试
- Android单元测试 Only the original thread that created a view
- Intent的用法(初步)
- 【Android(安卓)Studio】android 自测工具monkey的使用
- Android(安卓)MVC模式
- android studio 连接真机测试 小米8
- Android(安卓)WebView 中的 Html 网页定位操作
- Android(安卓)Binder入门指南之getService详解之请求的反馈