,,Android应用程序保持后台唤醒(使用WakeLock实现)

,,Android应用程序保持后台唤醒(使用WakeLock实现)

本文主要介绍使用WakeLock在后台保持安卓应用唤醒的知识。具有很好的参考价值。下面就让我们跟随边肖一起来看看吧。

在使用微信、QQ等一些产品时,如果有新消息来了,即使锁屏,手机屏幕也会亮起并提示声音,这时用户就知道有新消息来了。不过一般来说,手机锁屏后,安卓系统为了省电,减少CPU消耗,会在一段时间后让系统进入休眠状态。此时,Android系统中的CPU会保持在相对较低的功耗状态。鉴于前面的例子,接收到新消息时一定有网络请求,网络请求是一个消耗CPU的操作。那么,如何保持系统的网络状态,甚至在系统进入睡眠状态后,通过程序唤醒手机呢?答案是Android中的WakeLock机制。

首先看看官方的解释:

这个类让你控制设备的电源状态。

PowerManager。唤醒锁:让你说你需要打开设备。

PowerManager负责管理Android设备的电源,系统则通过各种锁控制电源。WakeLock是一种锁定机制,只要有人守着这个地方,系统就无法进入睡眠阶段。由于必须保持应用程序在后台运行,因此自然要获得这个锁,以确保应用程序始终在后台运行。之前我提出了一个要求,要求在后台运行一个服务来执行轮询,但是发现过了一会儿轮询就中断了(我的测试是要求二十分钟后停止),但是再次解锁屏幕后,轮询请求又开始了。后来我在Stackoverflow上找到了WakeLock的用法,试了一下,效果还挺好的。在用这个方法之前,我把服务设置为前台,其他方法都不管用。不知道有没有更好的方法让你达到这个要求。请留言和我讨论!

接下来,我们来看看如何使用唤醒锁:

WakeLock wakeLock=null

//获取电源锁,在屏幕熄灭时仍然获取CPU的情况下保持服务运行。

私有void acquireWakeLock()

{

if (null==wakeLock)

{

power manager pm=(power manager)this . getsystemservice(上下文。POWER _ SERVICE);

wake lock=pm . new wake lock(power manager。PARTIAL_WAKE_LOCK|PowerManager。ON_AFTER_RELEASE,' PostLocationService ');

if (null!=唤醒锁)

{

wake lock . acquire();

}

}

}

//释放设备电源锁

私有void releaseWakeLock()

{

if (null!=唤醒锁)

{

wake lock . release();

wakeLock=null

}

}

上面的第一种方法是获取锁,第二种方法是释放锁。一旦获取了锁,在屏幕熄灭或长时间锁定后,系统后台可以一直保持获取锁的应用程序运行。获取PowerManager的实例pm,然后通过newWakeLock方法获取wakelock的实例,其中第一个参数是指定获取哪种类型的锁。不同的锁对系统CPU、屏幕、键盘的影响不同,第二个参数是自定义名称。

各种锁的类型对CPU 、屏幕、键盘的影响:

PARTIAL_WAKE_LOCK:保持CPU运行,屏幕和键盘灯可能会关闭。

SCREEN_DIM_WAKE_LOCK:保持CPU运行。允许保持屏幕显示,但可能是灰色的。允许关闭键盘灯。

SCREEN_BRIGHT_WAKE_LOCK:保持CPU运行,保持屏幕高亮,关闭键盘灯。

FULL_WAKE_LOCK:保持CPU运行,保持屏幕高亮,保持键盘灯亮。

ACQUIRE_CAUSES_WAKEUP:强制屏幕点亮。这个锁主要是针对一些必须通知用户的操作。

ON_AFTER_RELEASE:解锁时,保持屏幕开一会儿。

最后别忘了声明权限:

uses-permission Android:name=' Android . permission . wake _ LOCK '/

uses-permission Android:name=' Android . permission . device _ POWER '/

以上总结了一种提出需求的方法。有更好方法的朋友希望在留言处提出来,一起讨论改进。谢谢大家!

要求:要在后台运行一个服务来执行轮询,在屏幕关闭或锁定后,仍然需要将服务保持在轮询状态。

这就是本文的全部内容。希望这篇文章的内容能给你的学习或者工作带来一些帮助,同时也希望你能多多支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • windowsandroid手机版下载,windowsandroid安装apk
  • windowsandroid手机版下载,windowsandroid安装apk,WindowsAndroid 安装教程详解
  • android调用webview方法,androidwebview是什么,Android 中 WebView 的基本用法详解
  • android传感器高级编程,Android传感器,Android编程之光线传感器用法详解
  • android.app.Dialog,android自定义dialog对话框,Android开发笔记之-Dialog的使用详解
  • android 图片视频轮播框架,androidlayout轮播图,Android实现炫酷轮播图效果
  • android里的viewpager,安卓自定义view流程,Android自定义引导玩转ViewPager的方法详解
  • android里的viewpager,android viewpager详解
  • android里的viewpager,android viewpager详解,Android自定义超级炫酷的ViewPage指示器
  • android调用webview方法,androidwebview是什么
  • android设置控件宽度,android获取屏幕宽度和高度
  • android设置控件宽度,android获取屏幕宽度和高度,Android中获取控件宽高的4种方法集合
  • android蓝牙开发的基本流程,安卓蓝牙app开发教程
  • android蓝牙开发的基本流程,安卓蓝牙app开发教程,android蓝牙简单开发示例教程
  • android菜单栏,android菜单控件
  • 留言与评论(共有 条评论)
       
    验证码: