安卓Java面试题 171- 180

时间:2024-03-18 21:39:08
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有个坏处就是一直会有一个通知栏显示在界面上,这种方式比较流氓,但是效果相对来说比较