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也不会被销毁!