能否保证service不被杀死?
Service设置成START_STICKY
- kill 后会被重启(等待5秒左右),重传Intent,保持与重启前一样
提升service优先级
- 在AndroidManifest.xml文件中对于intent-filter可以通过
android:priority = "1000"这个属性设置最高优先级,1000是最高值,如果数字越小则优先级越低,同时适用于广播。 - 【结论】目前看来,priority这个属性貌似只适用于broadcast,对于Service来说可能无效
提升service进程优先级
- Android中的进程是托管的,当系统进程空间紧张的时候,会依照优先级自动进行进程的回收
- 当service运行在低内存的环境时,将会kill掉一些存在的进程。因此进程的优先级将会很重要,可以在startForeground()使用startForeground()将service放到前台状态。这样在低内存时被kill的几率会低一些。
- 【结论】如果在极度极度低内存的压力下,该service还是会被kill掉,并且不一定会restart()
onDestroy方法里重启service
- service +broadcast 方式,就是当service走onDestory()的时候,发送一个自定义的广播,当收到广播的时候,重新启动service
- 也可以直接在onDestroy()里startService
- 【结论】当使用类似口口管家等第三方应用或是在setting里-应用-强制停止时,APP进程可能就直接被干掉了,onDestroy方法都进不来,所以还是无法保证
监听系统广播判断Service状态
- 通过系统的一些广播,比如:手机重启、界面唤醒、应用状态改变等等监听并捕获到,然后判断我们的Service是否还存活,别忘记加权限
- 【结论】这也能算是一种措施,不过感觉监听多了会导致Service很混乱,带来诸多不便
在JNI层,用C代码fork一个进程出来
- 这样产生的进程,会被系统认为是两个不同的进程.但是Android5.0之后可能不行
root之后放到system/app变成系统级应用
大招: 放一个像素在前台(手机QQ)
能否保证service不被杀死?的更多相关文章
- 保证service不被杀死的方法
Service设置成START_STICKY kill 后会被重启(等待5秒左右),重传Intent,保持与重启前一样 提升service优先级 在AndroidManifest.xml文件中对于in ...
- 如何保证Service在后台不被kill
如何保证Service在后台不被kill 相信很多Android开发者在面试过程中会经常被问到“如何保证Service在后台不被kill”这个问题,总结了下一些大神给的答案. 引用知乎Android ...
- 【转】Android开发之如何保证Service不被杀掉(broadcast+system/app)
Service简介 1.Service 每个Service必须在manifest中 通过<service>来声明. 可以通过contect.startservice和contect.bin ...
- Android 开发之如何保证Service不被杀掉(broadcast+system/app)
序言 最近项目要实现这样一个效果:运行后,要有一个service始终保持在后台运行,不管用户作出什么操作,都要保证service不被kill,这可真是一个难题.参考了现今各种定制版的系统和安全厂商牛虻 ...
- Android开发之如何保证Service不被杀掉(前台服务)
序言 最近项目要实现这样一个效果:运行后,要有一个service始终保持在后台运行,不管用户作出什么操作,都要保证service不被kill.参考了现今各种定制版的系统和安全厂商牛虻软件,如何能保证自 ...
- Android开发之如何保证Service不被杀掉(broadcast+system/app)
序言 最近项目要实现这样一个效果:运行后,要有一个service始终保持在后台运行,不管用户作出什么操作,都要保证service不被kill,这可真是一个难题.参考了现今各种定制版的系统和安全厂商牛虻 ...
- 保证service存活
Android开发的过程中,每次调用startService(Intent)的时候,都会调用该Service对象的onStartCommand(Intent,int,int)方法,然后在onStart ...
- [转] Android开发之如何保证Service不被杀掉(broadcast+system/app)
转发:原文链接http://blog.csdn.net/mad1989/article/details/22492519 序言 最近项目要实现这样一个效果:运行后,要有一个service始终保持在后台 ...
- Android开发之如何保证Service不被杀掉(broadcast+system/app
Android开发之如何保证Service不被杀掉(broadcast+system/app) 序言 最近项目要实现这样一个效果:运行后,要有一个service始终保持在后台运行,不管用户作出什么操作 ...
随机推荐
- 网络初级篇之RSTP(原理与配置)
一.RSTP的产生 前面的文章写到了当网络拓扑发生变化时,STP的收敛速度大约需要花费30秒-50秒的时间才会继续转发数据.这样在实际生产环境中花费的时间是非常长的,这样RSTP(快速生成树协议)便应 ...
- 【TCP】拥塞控制
TCP拥塞控制 出现拥塞 ∑对资源的需求 > ∑可用资源 拥塞控制是防止过多的数据注入到网络中,使网络中的路由器或链路不过载,这是一个全局性的. 流量控制是点对点的通信量的控 ...
- ngnix 配置说明
#定义Nginx运行的用户和用户组 user www www; # #nginx进程数,建议设置为等于CPU总核心数. worker_processes ; # #全局错误日志定义类型,[ debug ...
- 小程序UI设计(9)-文字排版
小程序中一般很少大段落的文字,基本是4.5个字的主题.一行标题.一行摘要.两行描述.显示时超出部分用省略号代替.下面结合工具使用介绍一下文字排版的方法.先看效果图. 工具中属性设置如下图:两行文字属 ...
- yii\base\InvalidCallException The cookie collection is read only.
Invalid Call – yii\base\InvalidCallException The cookie collection is read only. 在使用Yii2进行cookie操作时会 ...
- 关于注解-Hebernate与JPA(java persistence api)
The JPA spec. defines the JPA annotation in the javax.persistence package. Hibernate not only implem ...
- linux禁止普通用户登录
要想禁止普通用户登录 方法如下: 在 /etc下创建一个 nologin的文件 编辑这个文件,输入内容,当普通用户登录时就会提示这个文件的内容,并且禁止登陆. 执行步骤: touch /etc/nol ...
- 基于Kibana的可视化监控报警插件sentinl入门
sentinl是什么 Kibi/Kibana Alert & Reporting App Watching your data, 24/7/365 sentinl是一个免费的kibana预警与 ...
- VC++ ID号如何分配
自动生成的,有默认规则. #define _APS_NEXT_RESOURCE_VALUE 137 //下一个资源ID(插入的一些对话框.图片.图标等) #define _APS_NEXT_COMMA ...
- 什么是http协议(一)
http协议是大家在互联网中最为熟悉的协议,只要上网大家都会遇到,但是,很多人被问道什么是http协议,http协议的内容是什么就懵了.这里,我们随便聊聊http协议. 首先,我们说说协议.我一直觉得 ...