android service生命周期

tyle="margin:20px 0px 0px; font-size:14px; line-height:26px; font-family:Arial; color:rgb(51,51,51)">

2、bindService及unBindService方法可多次调用,在调用unBindService方法前连续调bindService对应的onBind()只会调用一次,连续多次调用unBindService对应的onUnbind方法只会调用一次
3、第一次调用startService-->bindeService-->unBindService对应的调service方法为onCreate()->onBind()->onServiceConnected()->onStart()(其中startService与bindeService的顺序没有关系,onStart在onBind()前还是后可能是受service 的onCreate()方法执行时间影响)
4、在Service stop前不论是在当前activity还是其他对象中继续调用startService-->bindeService-->unBindService这些方法对应的调service方法为onStart()->onServiceConnected()(在同一对象如果调过bindService后在调用unBindService前重复调bindService,则onServiceConnected()方法不会重复调用),不会再调用onBind()方法和onUnbind()方法。

5、在service的生命周期中onBind()方法和onUnbind()只会被调用一次即使在不同对象调了多次bindeService和unBindService。
6、如果在activity1中startService,在activity2中onBindServie,则在activity2调unBindService前在activity1中调stopService则不能立即调service的onDestroy,只有在activity2调unBindService后才会调service的onDestroy.如果只在activity1中startService和onBindServie则可在unBindService前调stopService使service的onDestroy被调用。


总结:startService和bindService及stopService和unBindService都可以多次调用,只是在Service关闭之前重复调用startService方法会重复调service的onStart(),重复调bindeService只会调onServiceConnected()而不会调onBind(),重复调unBindService是不会调onUnbind()方法的。
      stopService只有在所有调过bindServie的对象(调stopService的对象除外,可不用unBindeService)中都调了unBindService以后调才能使service的onDestroy被调用。
      onServiceDisconnected方法在意外连接断开或者系统资源不够的时候调用,或者service stop后,则之前调了几次unBindService则调几次onServiceDisconnected方法

以上过程全部在2.3中测试得到的结果

原文地址:https://www.cnblogs.com/javawebsoa/p/3043326.html