Service生命周期自我总结

今天介绍一下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服务。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值