Android Service 的重启
做APP的时候,我们可能需要一个后台服务一直在运行着,得用到Service组件。
但服务可能在如下情况被杀死:
A.用户手动点击停止。
B.采用第三方软件(比如360手机卫士)进行清理,当然这样子除了系统服务外,其他的进程肯定也会被杀死,除非跟手机厂商联系。
这时候可能需要重启该服务,上网看了半天,有提到用Timer、AlarmManager去实现间歇性的发送广播启动Service(注册的广播接收后,启动Service),我实现了下,发现还是在B情况下还是不能满足。
我手机上装了一个卡卡司机助手,发现在B情况下,杀掉后,服务过段时间自动启动了,观察Log打印。
07-12 14:12:15.735: I/HadesLee(1456): Receiver,action=android.intent.action.USER_PRESENT
07-12 14:12:15.745: I/HadesLee(1456): KakaService.onCreate....
07-12 14:12:15.745: I/HadesLee(1456): KakaService.onStartCommand,flags=2,startId=1
07-12 14:12:15.755: I/ActivityManager(218): Start proc com.miui.weather2 for broadcast com.miui.weather2/.service.ServiceUpdateWeather: pid=1484 uid=10060 gids={3003}
07-12 14:12:15.755: I/HadesLee(1456): nextRemindTime=null
看到此Log,发现它是收到android.intent.action.USER_PRESENT的广播后,进行服务的启动的。
android.intent.action.USER_PRESENT对应的手机屏幕的解锁,一般用户哪能有病没病的让手机一直在唤醒状态,所以我们可以通过接收此广播进行服务的重启,保持Service一直在后台运行。
在AndroidManifest.xml文件里注册该广播就OK,顺带贴下手机开机发送的广播。
<receiver android:name="com.agilemobi.comac.collect.android.services.UserPresentReceiver" ><intent-filter><action android:name="android.intent.action.USER_PRESENT" /></intent-filter></receiver>
<receiver android:name="com.agilemobi.comac.collect.android.services.BootReceiver" ><intent-filter><action android:name="android.intent.action.BOOT_COMPLETED" /><category android:name="android.intent.category.HOME" /></intent-filter></receiver>
public class UserPresentReceiver extends BroadcastReceiver {private static final String TAG = "UserPresentReceiver";@Overridepublic void onReceive(Context context, Intent intent) {// TODO Auto-generated method stubLog.e(TAG, "receive broadcast");// do something}
}
Android Service 的重启相关推荐
- 三星 自动重启 android,Android 应用被杀掉之后 Service 的重启问题
背景 最近自己做的性能搜集apk出现了一些很迷的问题,其实又是机型的兼容问题,就是在性能的service运行期间如果杀掉性能搜集的apk,那么在sumsung的机器上,service会重启,而在国内的 ...
- android 浏览器源码分析,从源码出发深入理解 Android Service
原标题:从源码出发深入理解 Android Service 原文链接: 建议在浏览器上打开,删除了大量代码细节,:) 本文是 Android 系统学习系列文章中的第三章节的内容,介绍了 Android ...
- Android Service的onStartCommand返回值用法
2019独角兽企业重金招聘Python工程师标准>>> Android Service的onStartCommand返回值用法 本文目的:使读者快速理解 1.START_STICKY ...
- android demo示例代码,Android Service demo例子使用详解(示例代码)
Android Service demo例子使用详解\ 概述 Service 是 Android 的四大组件之一,它主要的作用是后台执行操作,Activity 属于带有 UI 界面跟用户进行交互,而 ...
- 为Android系统定制重启功能
按计划每周更新一篇技术博文,第二篇:<为Android系统定制重启功能> 一.Android系统重启的实现方式 1.广播方式 之前的博文介绍过这种方式<使用广播实现的Android关 ...
- Android Service(一) Service初识
在开发应用中,或多或少都会遇到Service有关知识.今天就来分析Service的使用. 一.概述. 首先看看官网是如何描述的. A Service is an application compone ...
- android服务常驻内存,android service常驻内存的一点思考
我们总是不想自己的Android service被系统清理,以前时候大家最常用的办法就是在JNI里面fork出子进程,然后监视 service进程状态,被系统杀死了就重启它. 我分别在android4 ...
- Android Service服务的相关介绍
文章目录 Android Service服务的相关介绍 创建方式 启动方式 生命周期 onStartCommand参数及返回值的理解 ServiceConnection 场景说明 前台服务 问答 st ...
- android service常驻内存的一点思考
我们总是不想自己的Android service被系统清理,以前时候大家最常用的办法就是在JNI里面fork出子进程,然后监视 service进程状态,被系统杀死了就重启它. 我分别在android4 ...
最新文章
- 报名 | 第二届网上行为社会网分析学术研讨会
- Warning: Permanently added the RSA host key for IP address '13.229.188.59' to the list of known host
- java 执行html里的js_如何用java执行指定页面中的js代码
- Postman——导出测试接口集合的Collection文件
- Git分支命令学习使用
- zabbix前端php界面,Zabbix前端插件zatree在Zabbix 2.2.1前端报错的解决方案
- IDM出现输入用户名和密码不能下载解决方法
- 怎样对php使用systemctl启动,Centos7 配置php-fpm服务到systemctl
- PyTorch数据加载器
- [第1节]时间、空间复杂度,斐波那契、爬楼梯
- Windows Server AppFabric分布式缓存详解
- 【Android实战】----Android Studio2的安装使用
- 如何高效对接第三方支付
- 2021第一届网刃杯网络安全大赛-签到题
- html简单旋转木马
- Http 请求头中 X-Requested-With 的含义
- 用于自动化的 10 个杀手级 Python 脚本
- Grad-CAM可视化
- 天球坐标系和地球坐标系
- win10系统ipv6服务器地址,win10系统设置ipV6地址的处理办法
热门文章
- android tablelayout 点击,Android Design之TableLayout选项卡
- java连接mysql数据库 R,java连接MySql数据库!
- 软件测试——测试基础
- 批量画同心不同半径圆lisp_【微课视频】青岛版数学六年级上册5.1圆的认识
- SQL基础——DDL、DML、DQL、DCL速览
- elasticsearch报错exceptions.RequestError(400, u'mapper_parsing_exception', u'No handler field..
- 25岁房贷上万濒临失业,大专小哥转行软件测试“挽救”人生
- Linux服务器查看日志方法小结
- 高中同窗被叫“码子”的!如今转行软件测试,不止是年轻,还有拼搏的勇气
- vue项目部署iis后 乱码_vue项目的自动化部署