Service的调用

Context.startService():Service会经历onCreate -> onStart(如果Service还没有运行,则android先调用onCreate()然后调用onStart();如果Service已经运行,则只调用onStart(),所以一个Service的onStart方法可能会重复调用多次 );stopService的时候直接onDestroy,如果是调用者自己直接退出而没有调用stopService的话,Service会一直在后台运行。该Service的调用者再启动起来后可以通过stopService关闭Service。 注意,多次调用Context.startservice()不会嵌套(即使会有相应的onStart()方法被调用),所以无论同一个服务被启动了多少次,一旦调用Context.stopService()或者stopSelf(),他都会被停止。补充说明:传递给startService()的 Intent对象会传递给onStart()方法。调用顺序为:onCreate --> onStart(可多次调用) --> onDestroy。

Context.bindService():Service会经历onCreate() -> onBind(),onBind将返回给客户端一个IBind接口实例,IBind允许客户端回调服务的方法,比如得到Service运行的状态或其他操作。这个时候把调用者(Context,例如Activity)会和Service绑定在一起,Context退出了,Srevice就会调用 onUnbind -> onDestroyed相应退出,所谓绑定在一起就共存亡了 。

补充说明:传递给bindService()的Intent对象会传递给onBind(),传递给unbindService()的Intent对象会传递给onUnbind()方法。 调用顺序为:onCreate --> onBind(只一次,不可多次绑定) --> onUnbind --> onDestory。

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

broadcastRecevier只能通过startService启动Service ,因为广播本身生命周期很短,bind的话没有意义

Service的生命周期 :

Service的生命周期方法比Activity少一些,只有onCreate, onStart, onDestroy我们有两种方式启动一个Service,他们对Service
生命周期的影响是不一样的。

1 通过startService
Service会经历 onCreate -> onStart stopService的时候直接onDestroy


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


2 通过bindService

Service只会运行onCreate, 这个时候 TestServiceHolder 和TestService绑定在一起
TestServiceHolder 退出了,Srevice就会调用onUnbind->onDestroyed所谓绑定在一起就共存亡了。

更多相关文章

  1. Dialog使用findViewById 报空指针异常
  2. Android中常见面试题
  3. GPS在Android的使用
  4. Android(安卓)HAL技术详解
  5. Android让屏幕保持常亮,不熄屏的三种方法
  6. EventBus3.0源码解析(二):post()与postSticky()
  7. android将path拆分为多个path
  8. Android(安卓)利用getIdentifier()方法获取资源ID
  9. android的Dialog使用

随机推荐

  1. Android(安卓)下的 makefile 组织结构
  2. Android判断TextView是否超出加省略号
  3. Android随笔--短小精悍的代码段(持续更新)
  4. 新浪微博请求数据出错(Android(安卓)Volle
  5. Android 8.0 通知显示
  6. cts vts 介绍
  7. Android收不到ACTION_USB_DEVICE_ATTACHE
  8. Android studio 3.4.1 升级后遇到的问题
  9. Android - 获取设备信息的工具类( DeviceU
  10. Android之SharePreferences数据存储