您的位置:首页 > 移动开发 > Android开发

Service生命周期自我总结

2015-10-28 09:27 344 查看
今天介绍一下Service的生命周期!

第一:Service是Android系统中四大重要组件之一,通常运行在后台,没有可视化的界面的一种重要组件。

第二:Service启动的2种方式:startService()和BindService()。

对应startService()启动Service生命周期如下:



1)服务如果已经启动(也就是说我们已经调用了startService()方法,但是还没有调用stopSelf()或者stopService()方法之前),如果我们再次调用startService()方法启动服务的话,那么该服务不会调用onCreate()方法,将会直接调用onstartCommand()方法。也就是说onCreate()方法只会在服务创建的时候运行一次,以后无论启动多少次服务onCreate()方法不会被再次调用,onstartCommand()方法将会被调用多次。

2)服务的停止有2种方法:在Service程序外部调用startService()方法或者在Service程序内部调用stopService()方法。

对应BindService()启动Service生命周期如下:



1)服务的绑定只是绑定一次,也就是说当我们绑定过一次Service服务(调用了BindService(),但是还没有调用UnBindService()方法),此时如果我们再次调用BindService的话,那么Service生命周期将不再调用onCreate()、onBind()方法,也就是说只是绑定一次。

2)服务只绑定一次,但是我们可以多次调用BindService()方法,程序并不会出现异常,无非就是Service的生命周期不作出任何反应也就是说不会再次调用onCreate()、onBind()方法;但是我们对应地只能调用一次UnBindService()方法,并不能多次调用UnBindService()方法,否则会出现异常导致程序崩溃。

注:

1》Service服务可以以通知消息的方式在前台显示,有也就仅有这一种情况Service是运行在前台的,但是它的生命周期还是和Service的生命周期完全相同的。在Android2.0之前我们可以在我们的主程序中调用setForeground方法,在Android2.0之后我们调用startForeground方法。

2》Service服务无论采取哪种方式启动服务,我们都需要在AndroidManifest.xml文件中注册Service,否则Service将不会生效启动。

3》Service服务生命周期是和程序生命周期(绑定着生命周期)相关,但是我们还存在着一种叫做远程服务Service,该Service通常是在不同进程(程序)之间进行通讯信息,这种方式的Service实现方式通常采用AIDL的方式来实现,下一节我将会采用一个DEMO的方式简单介绍一下AIDL方式的Service服务。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息