【Android】の基础——Service

本文详细介绍了Android中Service的两种启动方式:startService()和bindService(),并探讨了它们各自的生命周期特点及应用场景。此外,还介绍了如何实现Service与Activity间的通信,以及IntentService的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Service

Service生命周期

这里写图片描述

Service启动方式

  1. 第一种形式:通过startService()启动Service:
    • 如果Service没被创建先执行onCreate(),再执行onStart()方法,Service开始运行。
    • 如果Service已经存在,则只调用onStart()方法。
    • 只有调用stopService()方法才能关闭Service。如果调用者退出但是没有调用stopService()方法,Service依然在后台运行。
  2. 第二种形式:通过bindService()方法启动Service:
    • 调用bindServcie()后,如果Service没被创建会先执行onCreate,然后执行onBind()方法,并返回IBinder接口实例,允许其调用Service的方法。
    • 使用bindService()方法启用服务,调用者与服务绑定在了一起,调用者一旦退出,系统会调用onUnbind()和onDestroy()方法,服务就会终止。
    • Service只能被绑定一次,如果另一个调用者希望绑定,可以先让前者unbindService()解除绑定。当然,在unbindService()执行之后,系统会调用Service的onUnbind()和onDestroy()方法终止服务。

Service与Activity通信

  1. 通过绑定之后的binder。
  2. 通过broadcastReceiver(广播接受者)。
  3. AIDL

IntentService

IntentService代码包含了一个工作线程Thread、工作线程的Looper、工作线程的Handler。
在onCreate()方法中创建了子线程HandlerThread,然后利用HandlerThread提供的Looper创建消息循环。
在onStart()方法中将Intent作为消息发送给Handler,最终交由onHandleIntent方法处理.
在destroy()方法会销毁消息循环,进而子线程终止.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值