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




更多相关文章

  1. Android WebSocket通信通过Service来绑定
  2. android Environment 常用方法(获取存储目录)
  3. Android 获取控件宽高的3种方法
  4. Android中创建与几种解析xml的方法!
  5. android折叠展开列表测试
  6. Android当方法总数超过64K时(Android Studio)
  7. android ViewPager 使用方法
  8. Android 方法数超过64k限制的解决办法
  9. android的Services生命周期和使用方法

随机推荐

  1. Android(安卓)studio打开github上clone下
  2. Android隐藏标题栏和状态栏
  3. Android(安卓)Studio添加assets文件夹
  4. Android(安卓)Junit Test
  5. Android中怎么动态控制padding
  6. Rxjava的基础用法和源码解析(一)
  7. Android(安卓)activity onNewIntent触发
  8. Android(安卓)SDK 环境变量配置-Windows7
  9. Android(安卓)刷新页面更新数据方法探究
  10. Android(安卓)JsBridge源码学习