在做一个程序的时候,需要时刻保持某一服务是启动的,因此想到了通过监听屏幕SCREEN_ON和SCREEN_OFF这两个action。奇怪的是,这两个action只能通过代码的形式注册,才能被监听到,使用AndroidManifest.xml 完全监听不到。查了一下,发现这是PowerManager那边在发这个广播的时候,做了限制,限制只能有register到代码中的receiver才能接收。

  1. private void registerScreenActionReceiver(){
  2. final IntentFilter filter = new IntentFilter();
  3. filter.addAction(Intent.ACTION_SCREEN_OFF);
  4. filter.addAction(Intent.ACTION_SCREEN_ON);
  5. registerReceiver(receiver, filter);
  6. }
  7. private final BroadcastReceiver receiver = new BroadcastReceiver(){
  8. @Override
  9. public void onReceive(final Context context, final Intent intent) {
  10. // Do your action here
  11. }
  12. };

那怎么才能保证我的服务一直是启动状态呢,其实还有另一个Action可以反映出用户正在使用手机的行为,每个用户在使用手机的时候,首先按电源键将屏幕点亮,紧接着就是解锁。解锁动作通过android.intent.action.USER_PRESENT发送出来,我们就能识别出该用户进入了home界面,也就能启动我们相应的服务了,不管你是要谈对话框welcome用户,还是后台启动程序升级服务,都可以!以神的名义发誓,该Action在AndroidManifest.xml中可以监听得到。

    1. <application android:icon="@drawable/icon" android:label="@string/app_name">
    2. <activity android:name=".ScreenActionTestActivity"
    3. android:label="@string/app_name">
    4. <intent-filter>
    5. <action android:name="android.intent.action.MAIN" />
    6. <category android:name="android.intent.category.LAUNCHER" />
    7. </intent-filter>
    8. </activity>
    9. <receiver android:name=".ActionReceiver">
    10. <intent-filter android:priority="90000">
    11. <action android:name="android.intent.action.USER_PRESENT" />
    12. </intent-filter>
    13. </receiver>
    14. </application>

全局监听SCREEN_ON和SCREEN_OFF的替代方法--监听屏幕解锁事件的更多相关文章

  1. Android监听屏幕解锁和判断屏幕状态

    开发后台服务的时候经常需要对屏幕状态进行判断,如果是想要监听屏幕解锁事件,可以在配置里面注册action为 android.intent.action.USER_PRESENT的广播,则可以监听解锁事 ...

  2. 关于Oracle本地连接出现与监听有关的问题的解决方法探讨

    关于Oracle本地连接出现与监听有关的问题的解决方法探讨 监听的作用: 用于应用桌面即用户与数据库服务器建立连接的媒介,客户端发送连接请求,监听识别请求并建立客户端与服务器的连接后,监听的使命并完成 ...

  3. ORACLE 监听日志文件太大停止写监听日志引起数据库连接不上问题

    生产库监听日志文件太大(达到4G多),发现oracle停止写监听日志,检查参数log_file,log_directory,log_status 均正常,数据库运行也正常. 经确认确实为监听日志过大引 ...

  4. javascript 原生方法监听DOM结构改变事件

    js原生方法监听DOM结构改变事件 document.addEventListener('DOMNodeInserted',function(){alert(1)},false);document.a ...

  5. html屏幕旋转事件监听

    近期做微信服务号开发,在做图片展示的时候需要横竖屏的检测实现图片大小不同的展示. 添加屏幕旋转事件侦听,可随时发现屏幕旋转状态(左旋.右旋还是没旋). 摘自:http://bbs.phonegap10 ...

  6. android -- 小问题 关于ListView设置了OnScrollListener之后onScrollStateChanged()和onScroll方法监听不到的问题

    关于ListView设置了OnScrollListener之后onScrollStateChanged()和onScroll方法监听不到的问题: 原因: 首先OnScrollListener是焦点滚动 ...

  7. iOS中的过期方法和新的替代方法

    关于iOS中的过期方法和新的替代方法 1.获取某些类的UINavigationBar的统一外观并设置UINavigationbar的背景 注:方法名改了但是基本使用方法不变 + (instancety ...

  8. spring替代方法

    总结spring替代方法的使用 MyValueCalculator类中的computerValue方法将会被替代 public class MyValueCalculator { public Str ...

  9. Android中getDrawable和getColor过时的替代方法

    版权声明:本文为博主原创文章,未经博主允许不得转载. 前言 Android SDK 升级到 23 之后,getDrawable和getColor方法提示过时. 解决方案 getResources(). ...

随机推荐

  1. 【BZOJ5146】有趣的概率 概率+组合数(微积分)

    [BZOJ5146]有趣的概率 Description "可爱的妹子就像有理数一样多,但是我们知道的,你在数轴上随便取一个点取到有理数的概率总是0,"芽衣在床上自顾自的说着这句充满 ...

  2. MAC 安装ram

    RVM 是干什么的这里就不解释了,后面你将会慢慢搞明白. $ curl -L https://get.rvm.io | bash -s stable 期间可能会问你sudo管理员密码,以及自动通过ho ...

  3. mysql补充(3)优化sql语句查询常用的30种方法

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索 ...

  4. 【转】单片机中volatile定义的作用详解

    传送门:http://www.eeworld.com.cn/mcu/2011/0411/article_3928.html 一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译 ...

  5. Java工程师之SpringBoot系列教程前言&目录

    前言 与时俱进是每一个程序员都应该有的意识,当一个Java程序员在当代步遍布的时候,你就行该想到我能多学点什么.可观的是后端的框架是稳定的,它们能够维持更久的时间在应用中,而不用担心技术的更新换代.但 ...

  6. 【转】MVC中的扩展点

    原文地址:http://www.cnblogs.com/xfrog/tag/MVC/      MVC中的扩展点(十)辅助方法   MVC中的扩展点(九)验证   MVC中的扩展点(八)模型绑定   ...

  7. URAL 1277 - Cops and Thieves - [无向图点带权的最小点割]

    题目链接:https://cn.vjudge.net/problem/URAL-1277 The Galaxy Police (Galaxpol) found out that a notorious ...

  8. MyISAM存储引擎

    每个MyISAM在磁盘上存储成三个文件.第一个文件的名字以表的名字开始,扩展名指出文件类型..frm文件存储表定义.数据文件的扩展名为.MYD (MYData).索引文件的扩展名是.MYI (MYIn ...

  9. oel5.5安装mysql数据库初始化报错解决办法

    [root@chavinking mysql]# scripts/mysql_install_db --user=mysqlInstalling MySQL system tables...2016- ...

  10. iOS耳机等音频输出设备切换的通知

    #import "ViewController.h" #import <AVFoundation/AVFoundation.h> @interface ViewCont ...