Q1:谈一谈Service的生命周期?
Q2:Service的两种启动方式?区别在哪?
Q3:一个Activty先start一个Service后,再bind时会回调什么方法?此时如何做才能回调Service的destory()方法?
Q4:Service如何和Activity进行通信?
Q5:用过哪些系统Service?
Q6:是否能在Service进行耗时操作?如果非要可以怎么做?
Q7:AlarmManager能实现定时的原理?
Q8:前台服务是什么?和普通服务的不同?如何去开启一个前台服务?
Q9:是否了解ActivityManagerService,谈谈它发挥什么作用?
Q10:如何保证Service不被杀死?
Q1:谈一谈Service的生命周期?
官方文档提供的Sevice生命周期图如下:
先来看这几种回调方法含义:
onCreate():服务第一次被创建时调用
onStartComand():服务启动时调用
onBind():服务被绑定时调用
onUnBind():服务被解绑时调用
onDestroy():服务停止时调用
Q2:Service的两种启动方式?区别在哪?
-
startService():开启Service,调用者退出后Service仍然存在。
-
bindService():开启Service,调用者退出后Service也随即退出。
Service生命周期:
-
只是用startService()启动服务:onCreate() -> onStartCommand() -> onDestory
-
只是用bindService()绑定服务:onCreate() -> onBind() -> onUnBind() -> onDestory
-
同时使用startService()启动服务与bindService()绑定服务:onCreate() -> onStartCommnad() -> onBind() -> onUnBind() -> onDestory
Q3:一个Activty先start一个Service后,再bind时会回调什么方法?此时如何做才能回调Service的destory()方法?
一个Activty先start一个Service后,再bind时会调用 onBind()方法。
此时调用onUnBind()方法才能回调Service的destory()方法。注意:调用stopService()方法是不行的。
Q4:Service如何和Activity进行通信?
可以通过bindService的方式,先在Activity里实现一个ServiceConnection接口,并将该接口传递给bindService()方法,在ServiceConnection接口的onServiceConnected()方法里执行相关操作。
Q5:用过哪些系统Service?
参考文章:Android系统服务(SystemService)简介