android activity 和 service 生命周期巩固

1  activity生命周期

一、当activity首次被创建时,调用的是oncreate()方法

二、紧接着显示给用户时会调用 onstrat()方法,如果要让Activity置于前台的话就需要调用onResume方法

三、当另一个activity覆盖当前一个activity时 当前activity调用onpause()方法将当前(前一个activity)数据保存起来

四、如果你想停止一个activity的话可以调用onstop()方法

五、调用onstop()方法后 可以调用ondestory来销毁改activity也是该activity最后一次调用了,可以通过finish()关闭activity

六、当内存资源不足时,就可能杀死处于onpause()状态下的activity所在的进程,但这种极端的情况很少会发生

 

 

Activity生命周期图解-------------------------------------------------------------------------------------------------------------------------------

 

 

2.service生命周期

两种启动service的方法,所以两种方法的生命周期也不同

1.1 startservice()启动的service

一、oncreate()方法  当service第一次被创建后回调该方法,该方法在整个生命周期中只会调用一次

二、onstartcommand()方法,当客户端调用 startservice(intent) 方法时会回调该方法,可以多次调用的startservice(intent) 但不会

产生新的service 而是复用之前创建的service对象 但是会继续调用onstartcommand()方法 (结束service时只需在客户端调用stopservice()方法即可,多次复用也只需调用一次sotpservice即可)

三、ondestory()方法 当service被关闭时 该方法会被回调service

1.2bindservice()启动service

一、oncreate()  当首次通过bindservice绑定一个service时 系统会实例化一个service实例,系统会调用oncreate(),然后时onbind()方法

二、onbind()方法 当系统首次通过bindservice方法绑定了一个service时 系统先调用oncreate()方法,紧接着调用onbind()方法,通过onbind()方法返回的IBinder 调用这通过这个与service交互

三、onstartcomman()方法  在被启动时候调用

四、ondestory()方法         在service被接触绑定时调用

 

StartService启动Service后bindService绑定

如果Service已经由某个客户端通过StartService()启动,接下来由其他客户端 再调用bindService()绑定到该Service后调用unbindService()解除绑定最后在 调用bindService()绑定到Service的话,此时所触发的生命周期方法如下:
onCreate( )->onStartCommand( )->onBind( )->onUnbind( )->onRebind( )
PS:前提是:onUnbind()方法返回true!!! 这里或许部分读者有疑惑了,调用了unbindService后Service不是应该调用 onDistory()方法么!其实这是因为这个Service是由我们的StartService来启动的 ,所以你调用onUnbind()方法取消绑定,Service也是不会终止的!
得出的结论: 假如我们使用bindService来绑定一个启动的Service,注意是已经启动的Service!!! 系统只是将Service的内部IBinder对象传递给Activity,并不会将Service的生命周期 与Activity绑定,因此调用unBindService( )方法取消绑定时,Service也不会被销毁!

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值