美文网首页
Android Service

Android Service

作者: hanxianshe_9530 | 来源:发表于2019-11-01 21:14 被阅读0次

    Android ServiceAndroid四大组件之一。

    一、Service的声明

    一定要在AndroidManifest.xml中声明。
    Service分为如下三类

    1. foreground service
      fg Service执行一些对于用户来说是可感知的操作,如audio应用使用fg service来播放歌曲。
    2. background service
      bg service执行的操作对用户而言是不可感知的。
    3. bound service
      bound service主要是提供c/s接口,允许组件与service进行通信,或者是跨进程的通信。

    其实说到底,由于启动方式的不同导致了三种service,
    startService -> background service.
    startForegroundService -> foreground service
    bindService -> bound service

    二、Service 生命周期

    先从 Service 生命周期看起,Service 的生命周期比较有趣的一点是,它的生命周期会根据调用不同的方法启动有不同的表现,具体有两种形式。

    1. 通过 startService(Intent intent) 启动 Service
      生命周期是这样的: onCreate()onStartCommand()onDestroy()

    2. 通过 bindService(Intent intent,ServiceConnection conn,int flags) 启动 Service
      生命周期是这样的:onCreate()onBind(Intent intent)unBindService()onDestroy() 方法。

    Service生命周期图

    三、生命周期方法

    • onCreate():
      首次创建服务时,系统将调用此方法。如果服务已在运行,则不会调用此方法,该方法只调用一次。
    • onStartCommand():
      当另一个组件通过调用startService()请求启动服务时,系统将调用此方法。
    • onDestroy():
      当服务不再使用且将被销毁时,系统将调用此方法。
    • onBind():
      当另一个组件通过调用bindService()与服务绑定时,系统将调用此方法。
    • onUnbind():
      当另一个组件通过调用unbindService()与服务解绑时,系统将调用此方法。
    • onRebind():
      当旧的组件与服务解绑后,另一个新的组件与服务绑定,onUnbind()返回true时,系统将调用此方法。
    手动调用的方法:

    手动调用方法
    作用

    startService()
    启动服务

    stopService()
    关闭服务

    bindService()
    绑定服务

    unbindService()
    解绑服务

    自动调用的方法:

    自动调用方法
    作用

    onCreat()
    创建服务

    onStartCommand()
    开始服务

    onDestroy()
    销毁服务

    onBind()
    绑定服务

    onUnbind()
    解绑服务

    1. 生命周期调用
      1)启动Service服务
      单次:startService() —> onCreate() —> onStartCommand()
      多次:startService() —> onCreate() —> onStartCommand() —> onStartCommand()
      2)停止Service服务
      stopService() —> onDestroy()
      3)绑定Service服务
      bindService() —> onCreate() —> onBind()
      4)解绑Service服务
      unbindService() —> onUnbind() —> onDestroy()
      5)启动绑定Service服务
      startService() —> onCreate() —> onStartCommand() —> bindService() —> onBind()
      6)解绑停止Service服务
      unbindService() —> onUnbind() —> stopService() —> onDestroy()
      7)解绑绑定Service服务
      unbindService() —> onUnbind(ture) —> bindService() —> onRebind()

    相关文章

      网友评论

          本文标题:Android Service

          本文链接:https://www.haomeiwen.com/subject/gdkhyctx.html