学习笔记:四大组件之Service理解

本文详细介绍了Android中的Service,包括Service的基本概念、Start和Bind两种启动方式的特性、优缺点以及IntentService的使用。Service是后台运行、无界面的组件,优于Activity的优先级。StartService适合长期后台运行,而BindService允许Activity与Service交互并控制。IntentService则结合了启动子线程和自动停止的功能。Service运行在主线程,需注意避免执行耗时操作以防止ANR。文章还提供了相关代码示例和生命周期的讲解。
摘要由CSDN通过智能技术生成

一、Service基本概念

1.定义:

  - 后台运行,不可见,无界面

  - 优先级高于Activity  

2.用途

  - 播放音乐、记录地理位置的改变、监听某种动作。。。

3.注意

  - 运行在主线程,不能用它来做耗时请求或动作,否则会出现ANR
  - 可以在Service中开启一个子线程,来做耗时操作


4.生命周期

  - startService
  - bindService








5. 两种Service类型:


Start方式

  - 服务跟启动源没有任何联系

  - 无法得到服务对象

Bind方式:
  - 通过IBinder接口实例的onBind()方法,返回一个Binder对象给启动源


  - 通过onServiceConnected() 方法得到Service对象,并且可以调用Service对象中发方法



二、Start启动方式


1. 定义Service

自定义一个MyStartService去继承Service类。复写其中的onCreate()、onStartCommand()、onDestroy()、onBind(),其中onBind()为抽象方法必须复写,但在Start启动方式中用不上。

第一次启动Service时会首先执行onCreate()方法创建一个Service实例,此方法中可以执行一些初始化操作,接着会执行onStartCommand()方法去执行具体的耗时逻辑,一般做法是开启子线程来处理,停止Service时会调用onDestroy(),回收资源。


2.启动和停止Service

和Activity一样,Service启动也需要Intent。首先需要new一个Intent对象,传入Activity实例和Service类两个参数,然后调用startService(intent)启动Service,此时Service将会执行onCreate()和onStartCommand。停止Service时,只需要调用stopService(intent),便会调用Service中的onDestroy()停止Service。或者也可以在MyStartService代码任意位置调用stopSelf()也会停止该Service


3.优点和缺点

优点:启动简单,可以一直保持后台运行,Activity退出时,不影响该Service运行,直到调用stopSe

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值