Android Service详解

生命周期如下:

两种启动方式

第一种方式: startService()

通过startService启动后,service会一直无限期运行下去,只有外部调用了stopService()或stopSelf()方法时,该Service才会停止运行并销毁。

当第一次调用的时候,方法顺序是:

构造方法——oncreate()——onStartCommand()

当第二次被调用的时候,直接调用onStartCommand()

结束:stopService():——>onDestory()

第二种方式:bindService()

bindService启动的服务和调用者之间是典型的client-server模式。调用者是client,service则是server端。service只有一个,但绑定到service上面的client可以有一个或很多个。这里所提到的client指的是组件,比如某个Activity。

client可以通过IBinder接口获取Service实例,从而实现在client端直接调用Service中的方法以实现灵活交互,这在通过startService方法启动中是无法实现的。

bindService启动服务的生命周期与其绑定的client息息相关。client也可以明确调用Context的unbindService()方法与Service解除绑定。当所有的client与service解除绑定的时候,才会调用onUnbind,然后 Service会自行销毁。

第一次调用:

构造方法——oncreate()——onBind()——onServiceConnected()

结束:unbindService():如果当前有Activity与Service相连——>onUnbind()——>onDestory()

Intentservice

IntentService 是继承于 Service 并处理异步请求的一个类,在 IntentService 内有一个工作线程来处理耗时操作,启动 IntentService 的方式和启动传统 Service 一样,同时,当任务执行完后,IntentService 会自动停止,而不需要我们去手动控制。

你可能感兴趣的:(Android Service详解)