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有个坏处就是一直会有一个通知栏显示在界面上,这种方式比较流氓,但是效果相对来说比较 |
相关文章
- 慕课网-安卓工程师初养成-3-3 Java中的赋值运算符
- 安卓开发过程中空指针的问题Java.lang.NullPointerException
- 【安卓面试题】使用SQLiteOpenHelper的getReadableDatabase()获得的数据库能不能,做写的操作
- 基于Java和Android Studio的五子棋安卓期末大作业(免费提供全部源码)
- 2020年开春最新面试!字节跳动安卓面试题及答案 (已拿到 offer)
- Java ee 与安卓环境搭建个人心得
- java的for循环问题的解决,以及安卓中ListView插入数据的问题
- 2.安卓逆向-初识java语言
- unity3d调用安卓java
- 【搬砖】安卓入门(1)- Java开发入门