开发者社区> 古镇月影> 正文

android 保持程序启动

简介: 引用:http://blog.csdn.net/chenghai2011/article/details/7219336 在做一个程序的时候,需要时刻保持某一服务是启动的,因此想到了通过监听屏幕SCREEN_ON和SCREEN_OFF这两个action。
+关注继续查看

引用:http://blog.csdn.net/chenghai2011/article/details/7219336

在做一个程序的时候,需要时刻保持某一服务是启动的,因此想到了通过监听屏幕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.   
  8. private final BroadcastReceiver receiver = new BroadcastReceiver(){  
  9.   
  10.     @Override  
  11.     public void onReceive(final Context context, final Intent intent) {  
  12.         // Do your action here  
  13.   
  14.     }  
  15.   
  16. };  


 

那怎么才能保证我的服务一直是启动状态呢,其实还有另一个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>  

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Android源码分析--应用程序启动
Android源码分析--应用程序启动
62 0
安卓SO层开发 -- 编译指定平台的SO文件
安卓SO层开发 -- 编译指定平台的SO文件
31 0
安卓SO层开发 -- 第一个NDK项目
安卓SO层开发 -- 第一个NDK项目
27 0
Android组件化开发(七)--从零开始教你分析项目需求并实现
前面几篇文章我们封装了几个组件化功能组件:包括:**网络请求组件,图片加载请求组件,应用保活组件,音乐播放组件封装。** > 每个组件都可以直接拿到自己项目中使用,当然还需根据自己项目要求进行优化。
28 0
Android组件化开发(六)-- 短视频播放组件封装
前面几篇文章我们封装了几个组件化功能组件: 包括:`网络请求组件`,`图片加载请求组件`,`应用保活组件`,`音乐播放组件封装`。 > 每个组件都可以直接拿到自己项目中使用,当然还需根据自己项目要求进行优化。
133 0
Android组件化开发(五)--完整版音乐播放组件的封装
前面几篇系列文章我们讲解了`组件化开发`中几个常用功能组件的开发,包括:`网络请求组件`,`图片加载请求组件`,`应用保活组件`。今天我们来封装一个`音乐播放组件`。
29 0
Android组件化开发(四)--进程保活组件的封装
前面文章我们封装了网络请求组件`lib_nework`和图片加载组件`lib_image_loader`,今天我们来封装一个进程保活的组件`lib_pull_alive`
42 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Android组件化实现
立即下载
蚂蚁聚宝Android秒级编译—— Freeline
立即下载
Android插件化:从入门到放弃
立即下载