Android Service 生命周期

普通的Service
class NormalService: Service() {

    override fun onCreate() {
        logger("onCreate")
        super.onCreate()
    }

    override fun onBind(intent: Intent?): IBinder? {
        logger("onBind")
        return null
    }

    override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
        logger("onStartCommand")
        return super.onStartCommand(intent, flags, startId)
    }

    override fun onDestroy() {
        logger("onDestroy")
        super.onDestroy()
    }
    private fun logger(str: String) {
        Log.d(javaClass.name, str)
    }
}

调用startService

  • onCreate
  • onStartCommand

多次调用 startServiceonStartCommand会被多次调用

调用stopService

  • onDestroy
用于和activity绑定交互的Service

创建service

class BindService: Service() {

    inner class MyBinder: Binder() {
        fun getService(): BindService {
            return this@BindService
        }
    }

    val myBinder = MyBinder()

    override fun onBind(intent: Intent?): IBinder? {
        logger("onBind")
        return myBinder
    }

    override fun onUnbind(intent: Intent?): Boolean {
        logger("onUnbind")
        return super.onUnbind(intent)
    }

    override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
        logger("onStartCommand")
        return super.onStartCommand(intent, flags, startId)
    }

    override fun onDestroy() {
        logger("onDestroy")
        super.onDestroy()
    }

    private fun logger(str: String) {
        Log.d(javaClass.name, str)
    }
}

创建ServiceConnection 并且bind

val serviceConnection = object : ServiceConnection {
            override fun onServiceConnected(name: ComponentName?, service: IBinder?) {
                logger("onServiceConnected")
            }

            override fun onServiceDisconnected(name: ComponentName?) {
                logger("onServiceDisconnected")
            }
        }
        
            bindService(bIntent, serviceConnection, BIND_AUTO_CREATE)

调用bindService

  • onCreate
  • onBind
  • onServiceConnected

多次调用bindService无效果,不会多次绑定

调用 unBindService

  • onUnbind
  • onDestroy

如果不调用unBindService 而直接调用stopService 没效果,服务并不会停止。

所有的service必须在AndroidManifest.xml中注册才能使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值