Android Service 基础知识

本文详细解析了Android中Service的概念,包括其定义、自定义声明方式、启动与绑定的两种使用方式及其生命周期变化。同时,文章对比了通过startService与bindService开启服务的不同,并探讨了服务在被启动和绑定时的生命周期特点。

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

1、什么是Service?

  •  Service  是一种可以在后台长时间执行操作而没有用户界面的应用程序组件。

        注意:自定义的Service 需要在AndroidManifest.xml中申明,声明方式为:<service ****** />

       例如:

2、启动Service的两种方式、生命周期、被启动又被绑定的服务生命周期

  • 通过startServie() :执行onCreate() -> onStartCommand() 然后处于运行状态,调用stopService() 或者 stopSelf() 停止服务,执行onDestroy();注意:调用者直接退出而没有调用 停止服务的方法,Service会一直在后台运行。

       

       通过startService()开启LocalService后打印的日志如下:

        

        通过调用stopService() 关闭LocalService 后打印的日志如下:

        

        

  • 通过bindService() :onCreate() -> onBind()  这个时候调用者 跟 service绑定在一起。 当绑定 Activity 的Context 不存在了(Activity被finish()),或者 断开连接 Context.unBindService() , onUnbind() -> onDestroy() 方法。

       通过bindService() 绑定服务打印日志如下:

       

       

       通过unBindService() 解绑服务打印日志如下:

       

       

  • 注意被启动 又被绑定 的服务的生命周期:如果一个服务又被绑定 又被启动, onCreate() 方法只会执行一次, startService() 调用多次,onStartCommand()也会被调用多次,且只有调用 Service的 stopService 或者 stopSelf()来停止服务,当服务被停止时(1、调用stopService ;2、调用stopSelf();3、不在有绑定的连接(没有被启动) ),在这里你应当做一份清除工作,如停止在Service中创建并运行线程。

        通过startService()开启服务,然后在对服务进行绑定,打印日志如下:

        

        通过unBindService()进行服务解绑

        

       未完,待更新.....

       当前Demo 的GitHub地址:https://github.com/YMAndroid/AndroidDemoProject  

 

      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值