Android Studio
App代码中不做任何处理,当按下电源键,屏幕关闭,设备就会开始休眠,App任务就会终止,直到系统唤醒过来。如果希望按下电源键之后App还能在后台运行,就需要做以下处理。
在AndroidManifest.xml中申请wakelock权限。
在class中输入以下代码:PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, LOG_TAG);wl.acquire();// TODO: 执行一些任务,例如播放音乐 2017/11/1wl.release();
重新编译安装App,当App运行起来执行上述TODO任务时,即使屏幕熄灭,任务也能正常执行,直到wl.release()执行了之后,设备系统就会开始休眠流程。
WakeLock有很多种。如PARTIAL_WAKE_LOCK用于保持CPU运行,屏幕可以关闭,常见的如播放音乐时会使用到。ACQUIRE_CAUSES_WAKEUP常用于通知,可以让屏幕从灭屏状态忽然亮一下。详细地请参考Android开发官网,根据需要选用。
wl.acquire()和wl.release()必须是成对使用,通常在onRusume方法中将设置的wakelock使用acquire()方法来保持唤醒,在onPause方法中使用release()方法来释放掉该wakelock,根据Activity生命周期来巧妙地使这两个方法成对的出现。
wakelock使用完,必须释放掉。如果不释放,就会造成App即使推出了,系统仍无法进入休眠。
谢谢您的阅读,如果你觉得本文有用,请点赞哦。