2011.09.01(三)——— android service startService bindService

2011.09.01(3)——— android service startService bindService
2011.09.01(3)——— android service startService bindService

参考:http://blog.csdn.net/huanyufeng/article/details/5873407
http://www.cnblogs.com/allin/archive/2010/05/15/1736458.html

1 通过startService
    使用context.startService() 启动Service是会会经历:
context.startService()  ->onCreate()- >onStart()->Service running
context.stopService() ->onDestroy() ->Service stop


   如果是调用者自己直接退出而没有调用stopService的
   话,Service会一直在后台运行。
   下次调用者再起来可以stopService或者stopSelf来停止service。

  2 通过bindService   
context.bindService()->onCreate()->onBind()->Service running
onUnbind() -> onDestroy() ->Service stop


    这个时候 调用者和TestService绑定在一起

   调用者 退出了,Srevice就会调用停止
   所谓绑定在一起就共存亡了。



在Service每一次的开启关闭过程中,只有onStart可被多次调用(通过多次startService调用),其他onCreate,onBind,onUnbind,onDestory在一个生命周期中只能被调用一次


要是这几个方法交织在一起的话,会出现什么情况呢?

一个原则是Service的onCreate的方法只会被调用一次,就是你无论多少次的startService又 bindService,Service只被创建一次。如果先是bind了,那么start的时候就直接运行Service的onStart方法,如果先 是start,那么bind的时候就直接运行onBind方法。如果你先bind上了,就stop不掉了,对啊,就是stopService不好使了,只 能先UnbindService, 再StopService,所以是先start还是先bind行为是有区别的。


09-02 08:19:29.034: INFO/System.out(7713): Test1
09-02 08:19:29.074: INFO/System.out(7713): onCreate
09-02 08:19:29.083: INFO/System.out(7713): onBind
09-02 08:19:29.183: INFO/System.out(7713): service connect
09-02 08:19:42.373: INFO/System.out(7713): Test2
09-02 08:19:42.464: INFO/System.out(7713): service connect


由此可以看出来 一个service可以绑定多个activity,并且ServiceConnection也执行了多次

例子当中 有两个测试

1、MainActivity 测试onStart onBind
2、MainActivity为base 测试是否可以绑定多个activity