android service

概念:android service 服务, 是andorid 四大组件之一

作用:用于处理后台任务

运行特性:它本身是跑在主线程中的的,所以如果在service 中处理耗时操作,应该启动子线程或者子任务来执行

使用:

1. 启动方式: startService bindService

  • startService 这种方式启动的service 和调用者之间没有直接的关联关系,就是说启动后即使调用者销毁了, 后台会一直跑着这个service, 除非调用stopService方法
  • bindService 这种方式启动的service是和调用者紧密联系在一起的,这种启动的service会随着调用者的销毁而销毁,也可以调用unbindservice主动销毁

2. 生命周期:

 

3. service 重要的理解点

  • 第一次点击:不管是startService还是bindService,如果service还未存在,那么会调用 
    onCreate,之后如果是startService那么调用onStartCommand(),如果是 
    bindService那么会调用onBind() 
    之后,如果再调startService(),那么会调用onStartCommand();如果再调用 
    bindService那么如果第一次点击是bindService,那么就不会调用onBind(),否则 
    什么方法都不会被调用。

    当bindService后,不能stopService,需要通过unBindService()来解除绑定。

    只是startService()后,不可以通过unBindService()来销毁service

     

  • 通过bindService()函数绑定Servcie时, onCreate()函数和onBinde()函 
    数将先后被调用 
    通过unbindService()函数取消绑定Servcie时,onUnbind()函数将被调用, 
    如果onUnbind()函数的返回true,则表示在调用者绑定新服务时, 
    onRebind()函数将被调用

    取消绑定仅需要使用unbindService()方法,并将ServiceConnnection 
    传递给unbindService()方法 
    需注意的是,unbindService()方法成功后,系统并不会调用 
    onServiceDisconnected(),因为onServiceDisconnected()仅在意外断开 
    绑定时才被调用

  • startService()的目的是回调onStart()方法,onCreate() 方法是在Service 
    不存在的时候调用的,如果Service存在(例如之前调用了bindService,那 
    么Service的onCreate方法已经调用了)那么startService()将跳过onCreate 
    () 方法。 
    bindService()目的是回调onBind()方法,它的作用是在Service和调用者之 
    间建立一个桥梁,并不负责更多的工作(例如一个Service需要连接服务器 
    的操作),一般使用bindService来绑定到一个现有的Service(即通过 
    StartService启动的服务)。

     

     
  • 多次调用startService和bindService ,最终都是同一个对象
     

 

posted @ 2016-05-20 16:18  LOVE SHARE  阅读(328)  评论(0编辑  收藏  举报