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 runningcontext.stopService() ->onDestroy() ->Service stop
如果是调用者自己直接退出而没有调用stopService的
话,Service会一直在后台运行。
下次调用者再起来可以stopService或者stopSelf来停止service。
2 通过bindService
context.bindService()->onCreate()->onBind()->Service runningonUnbind() -> 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): Test109-02 08:19:29.074: INFO/System.out(7713): onCreate09-02 08:19:29.083: INFO/System.out(7713): onBind09-02 08:19:29.183: INFO/System.out(7713): service connect09-02 08:19:42.373: INFO/System.out(7713): Test209-02 08:19:42.464: INFO/System.out(7713): service connect
由此可以看出来 一个service可以绑定多个activity,并且ServiceConnection也执行了多次
例子当中 有两个测试
1、MainActivity 测试onStart onBind
2、MainActivity为base 测试是否可以绑定多个activity