29
2020
04

Service的生命周期,两种启动方法,有什么区别

context.startService() ->onCreate()- >onStart()->Service running-->(如果调用context.stopService() )->onDestroy() ->Service shut down


1.如果Service还没有运行,则调用onCreate()然后调用onStart();


2.如果Service已经运行,则只调用onStart(),所以一个Service的onStart方法可能会重复调用多次。


3.调用stopService的时候直接onDestroy,


4.如果是调用者自己直接退出而没有调用stopService的话,Service会一直在后台运行。该Service的调用者再启动起来后可以通过stopService关闭Service。


context.bindService()->onCreate()->onBind()->Service running-->onUnbind() -> onDestroy() ->Service stop


1.onBind将返回给客户端一个IBind接口实例,IBind允许客户端回调服务的方法,比如得到Service运行的状态或其他操作。


2.这个时候会把调用者和Service绑定在一起,Context退出了,Service就会调用onUnbind->onDestroy相应退出。


3.所以调用bindService的生命周期为:onCreate --> onBind(只一次,不可多次绑定) --> onUnbind --> onDestory。

« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。