android保持服务不休眠(持续运行)以及唤醒屏幕的方法

假设有这样一个应用场景,一个服务一直在默默的工作(比如即时地获取服务器的消息),即使在屏幕已经因为长时间无操作而关闭,或者用户按了电源键让屏幕关闭,手机进入休眠状态,他必须依然在工作中。一旦从服务器获取到消息,他能点亮屏幕,然后进行一些处理工作。

1、让服务持续运行而不受手机休眠的影响,要这样处理:

在onCreate里面添加:

pm = (PowerManager)MyApplicationHolder.getContext().getSystemService(Context.POWER_SERVICE);
wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "myservice");
wl.acquire();  

在onDestroy里添加:

wl.release();  

这样就完成了,这个服务里如果做了一个定时器的话,他会一直运行。

2、让手机从休眠状态唤醒的方法:

KeyguardManager km = (KeyguardManager)MyApplicationHolder.getContext().getSystemService(Context.KEYGUARD_SERVICE);
KeyguardLock kl = km.newKeyguardLock("unlock");
kl.disableKeyguard();  

PowerManager pm = (PowerManager)MyApplicationHolder.getContext().getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP|PowerManager.FULL_WAKE_LOCK, "bright");
wl.acquire();
wl.release();  

注意,使用这个方法屏幕不能设锁。需android.permission.DISABLE_KEYGUARD 权限

原文地址:https://www.cnblogs.com/netcorner/p/9223693.html

时间: 2024-10-13 21:35:51

android保持服务不休眠(持续运行)以及唤醒屏幕的方法的相关文章

Android 查看服务service是否正在运行 列出正在运行的服务

在启动服务service或者停止服务service之前,需要先判断服务是否正在运行,再决定是否启动或停止服务,启动之前如果已经启动,会造成系统资源不必要的浪费,结束之前没有启动,则会使程序异常.下面是一个判断服务是否正在运行的方法,传入参数一个是调用该方法的Activity的context,另一个是完整的服务名,包括包名. 1 public boolean isRunning(Context c,String serviceName) 2 { 3 ActivityManager myAM=(Ac

3D语音天气球——在Unity中使用Android语音服务

转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 开篇废话: 这个项目准备分四部分介绍: 一:创建可旋转的"3D球":3D语音天气球(源码分享)--创建可旋转的3D球 二:通过天气服务,从网络获取时实天气信息并动态生成"3D球":3D语音天气球(源码分享)--通过天气服务动态创建3D球 三:Android语音服务和Unity的消息传递 四:Unity3D端和Android端的结合 前两篇文章已经介绍了如何创

如何让ASP.NET网站站点不停止 永远持续运行

转载自  http://www.cnblogs.com/insus/p/3658752.html 在公司内部服务器,运行很多网站(应用程序),但每个网站都有自动化或是定时执行的事务.后来经整合,所有这些自动化或定时执行的事务,都移至一个单独的站点(asp.net).这个站点,只要服务器没有关机,重启.它永远持续运行的. 这个站点算得上去服务性质的,基本上是没有人访问.但是asp.net站点有一个问题,开始运行之后,如果网站默认20分钟内没请求,Application会停止,直至有人访问,它再次启

Android 如何判断一个应用在运行(转)

Android 如何判断一个应用在运行 在一个应用中,或一个Service .Receiver中判断一个应用是否正在运行,以便进行一些相关的处理. 这个时候我们需要得到一个ActivityManager,这个Manager顾名思意就是管理Activity的,它有一个方法叫getRunningTasks,可以得到当前系统正在运行的Task的列表,代码如下: ActivityManager am = (ActivityManager)context.getSystemService(Context.

android后台服务的基本用法

了解了安卓多线程编程的技术之后,作为安卓的四大组件之一,是十分重要的. 定义一个服务 首先看一下如何在项目中定义一个服务, public class MyService extends Service { @Override public void onCreate() { super.onCreate(); Log.d("myservice","oncreate"); } @Override public int onStartCommand(Intent int

Android Service服务——初识

很抱歉(对我,也是对大家)过了两个星期说好的要发的博客迟迟没有动静,因为最近在与高等数学死磕,同时参加了一个党内的培训,所以现在的学习生活有些紧张,自己的的草稿都堆积了好几篇了,现在我就对于我应朋友之情需要完成一个android的播放器,对于其中的一些简单的要点,写一些自己的感悟. 首先我要提到的时Android  Service服务,其实我接触到Service这个概念的时间并不长,首先在做这个不能算作工程的东西时,我就想到了,android需要有这样的一个机制,通过一个程序去控制歌曲的播放,同

mint/ubuntu Android Eclipse ADT 简单安装及运行崩溃解决办法

1. 下载 Android SDK(ADT Bundle) http://developer.android.com/sdk/index.html (网站访问不了或者慢,请参考:轻松修改本地hosts文件,稳定用谷歌搜索和谷歌服务) (不想弄这个,请去我的百度网盘下载:http://pan.baidu.com/s/1jGIDNO6) 2. 解压到一个目录下,例如: unzip adt-bundle-linux-x86_64-20140624.zip -d ~/ 解压后得到文件夹:adt-bund

android Service服务(二)

1.1 活动和服务进行通信 上一节中我们学习了启动和停止服务的方法.不知道你又没有发现,虽然服务是在活动里启动的,但在启动了服务之后,活动和服务基本上就没关系了,确实如此,我们在活动里调用了startService()方法来启动myService这个服务,然后MyService的onCreate()和onStartCommand()方法就会得到执行.之后服务一直处于运行状态,但具体运行的是什么逻辑,活动就控制不了了.这就类似于活动通知了服务一下:'你可以启动了!' 然后服务就去忙自己的事情了,但

Android service 服务

Android的服务: 1:已启动方式: startService()和bindService(): startService:启动后,如果Activity关闭了,服务依然运行,除非stopService: bindService:创建开启服务器,但是在程序关闭的时候,会自动关闭服务: 通过ServiceConnectionjava接口获取service的IBinder接口: 2:控制服务(绑定服务): (1)但是上述两个方式都是通过Intent创建启动服务的,没有通过new,所以没有直接控制s