做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 的重启相关推荐

  1. 三星 自动重启 android,Android 应用被杀掉之后 Service 的重启问题

    背景 最近自己做的性能搜集apk出现了一些很迷的问题,其实又是机型的兼容问题,就是在性能的service运行期间如果杀掉性能搜集的apk,那么在sumsung的机器上,service会重启,而在国内的 ...

  2. android 浏览器源码分析,从源码出发深入理解 Android Service

    原标题:从源码出发深入理解 Android Service 原文链接: 建议在浏览器上打开,删除了大量代码细节,:) 本文是 Android 系统学习系列文章中的第三章节的内容,介绍了 Android ...

  3. Android Service的onStartCommand返回值用法

    2019独角兽企业重金招聘Python工程师标准>>> Android Service的onStartCommand返回值用法 本文目的:使读者快速理解 1.START_STICKY ...

  4. android demo示例代码,Android Service demo例子使用详解(示例代码)

    Android Service demo例子使用详解\ 概述 Service 是 Android 的四大组件之一,它主要的作用是后台执行操作,Activity 属于带有 UI 界面跟用户进行交互,而 ...

  5. 为Android系统定制重启功能

    按计划每周更新一篇技术博文,第二篇:<为Android系统定制重启功能> 一.Android系统重启的实现方式 1.广播方式 之前的博文介绍过这种方式<使用广播实现的Android关 ...

  6. Android Service(一) Service初识

    在开发应用中,或多或少都会遇到Service有关知识.今天就来分析Service的使用. 一.概述. 首先看看官网是如何描述的. A Service is an application compone ...

  7. android服务常驻内存,android service常驻内存的一点思考

    我们总是不想自己的Android service被系统清理,以前时候大家最常用的办法就是在JNI里面fork出子进程,然后监视 service进程状态,被系统杀死了就重启它. 我分别在android4 ...

  8. Android Service服务的相关介绍

    文章目录 Android Service服务的相关介绍 创建方式 启动方式 生命周期 onStartCommand参数及返回值的理解 ServiceConnection 场景说明 前台服务 问答 st ...

  9. android service常驻内存的一点思考

    我们总是不想自己的Android service被系统清理,以前时候大家最常用的办法就是在JNI里面fork出子进程,然后监视 service进程状态,被系统杀死了就重启它. 我分别在android4 ...

最新文章

  1. 报名 | 第二届网上行为社会网分析学术研讨会
  2. Warning: Permanently added the RSA host key for IP address '13.229.188.59' to the list of known host
  3. java 执行html里的js_如何用java执行指定页面中的js代码
  4. Postman——导出测试接口集合的Collection文件
  5. Git分支命令学习使用
  6. zabbix前端php界面,Zabbix前端插件zatree在Zabbix 2.2.1前端报错的解决方案
  7. IDM出现输入用户名和密码不能下载解决方法
  8. 怎样对php使用systemctl启动,Centos7 配置php-fpm服务到systemctl
  9. PyTorch数据加载器
  10. [第1节]时间、空间复杂度,斐波那契、爬楼梯
  11. Windows Server AppFabric分布式缓存详解
  12. 【Android实战】----Android Studio2的安装使用
  13. 如何高效对接第三方支付
  14. 2021第一届网刃杯网络安全大赛-签到题
  15. html简单旋转木马
  16. Http 请求头中 X-Requested-With 的含义
  17. 用于自动化的 10 个杀手级 Python 脚本
  18. Grad-CAM可视化
  19. 天球坐标系和地球坐标系
  20. win10系统ipv6服务器地址,win10系统设置ipV6地址的处理办法

热门文章

  1. android tablelayout 点击,Android Design之TableLayout选项卡
  2. java连接mysql数据库 R,java连接MySql数据库!
  3. 软件测试——测试基础
  4. 批量画同心不同半径圆lisp_【微课视频】青岛版数学六年级上册5.1圆的认识
  5. SQL基础——DDL、DML、DQL、DCL速览
  6. elasticsearch报错exceptions.RequestError(400, u'mapper_parsing_exception', u'No handler field..
  7. 25岁房贷上万濒临失业,大专小哥转行软件测试“挽救”人生
  8. Linux服务器查看日志方法小结
  9. 高中同窗被叫“码子”的!如今转行软件测试,不止是年轻,还有拼搏的勇气
  10. vue项目部署iis后 乱码_vue项目的自动化部署