清晰地理解Service

2018-07-09  本文已影响0人  Leon_w

定义:

Service 是一种运行在后台的服务,分为本地服务和远程服务.


1.Service的start和bind状态有什么区别?

Service分为两种启动方式一种是startService,还有就是BindService.下面分别说下startService和BindService


2.同一个Service,先startService,然后再bindService,如何把它停止掉?

当一个Service被先startService后再次被bindService了,或者多次被bindService,我觉得应该是不管是多次还是一次,有且只调用一次UnBindService.然后再StopService.就可以停止掉了


3.你有注意到Service的onStartCommand方法的返回值吗?不同返回值有什么区别?

onStartCommand的返回值有四种:

START_NOT_STICKY

如果当你的Service 在onStartCommand方法返回START_NOT_STICKY ,则当跑完onStartCommand后 杀死了该服务,那么只有当新的Intent传进onStartCommand 才会被重建否则不会重建,这是最安全的方法.

START_STICKY

如果当你的Service 在onStartCommand方法返回START_STICKY,则当跑完onStartCommand后 杀死了该服务,系统会重新创建Service,但这里的Intent不再是没杀死之前的Intent而是系统给分配的一个新的Intent.该Intent为空.

START_REDELIVER_INTENT

如果系统在onStartCommand()方法返回后,系统就会重新创建了这个服务,并且用发送给这个服务的最后的Intent对象调用了onStartCommand()方法。任意等待中的Intent对象会依次被发送。这适用于那些应该立即恢复正在执行的工作的服务,如下载文件

4.Service的生命周期方法onCreate、onStart、onBind等运行在哪个线程?

Service 是默认在主线程中运行的


上一篇 下一篇

猜你喜欢

热点阅读