171. 简述实现Service不被杀死常驻内存的方式有哪些 ? |
(1):如果是安卓自身机制因为系统资源不足的时候杀死你的Service,那么一般情况下会在一段时间之后系统会重启刚刚被杀死的Service那么此 时你该做的事就是怎么恢复Service被杀之前app的一些状态了,那么该怎么恢复呢?这里用到了Service中的onStartCommand方法 的返回值,如果该方法的返回值是START_STICKY的话,在kill该服务之前会保留该Service的状态为开始状态,但不保留Intent对 象,随后系统资源充足的时候进行Service重启时会调用onStartCommand方法,但是此时传入的该方法的Intent参数将为null;如 果设置onStartCommand方法的返回值是START_REDELIVER_INTENT的话,在Service要被系统kill掉之前同样会保 留Service状态为开始状态,同时也会保留Intent对象,随后在系统资源充足的时候仍然会启动该Service,同时会回调 onStartCommand方法,此时会将保留的Intent对象传入到onStartCommand方法中,保证了恢复Service被杀死之前的状 态; (2):如果Service是被第三方杀毒软件或者清理软件杀死的话,我们可以提升Service的优先级来防止被杀除,具体方法就是使用前台 Service,360就是这么做的,但使用前台Service有个坏处就是一直会有一个通知栏显示在界面上,这种方式比较流氓,但是效果相对来说比较 |
相关文章
- 安卓逆向学习笔记(1) - 反编译classes.dex获取apk的java源代码
- Unity 安卓平台签名打包错误compiled by a more recent version of the Java Runtime (class file version 53.0)
- 安卓kotlin面试题 101-105
- 安卓Kotlin面试题 41-50
- 安卓第三方动态链接库so调用,解决未对java开放的函数调用,解决类名对齐问题
- 尚硅谷全套课件整理:Java、前端、大数据、安卓、面试题
- UE5 打包安卓报错LogPlayLevel: UAT: at org.codehaus.groovy.vmplugin.v7.Java7
- Java环境变量,如何在电脑上完美运行安卓apk软件
- Java开发、安卓开发、iOS ;前端 后端 都是做什么的?有什么不同?哪个发展比较好?哪个比较难?
- java+appium+安卓模拟器实现app自动化Demo