线程的生命周期以及和Service的详解

线程的生命周期

1.新建

当创建Thread类的一个实例的时候这个线程就进入了新建状态 或者是未启动状态

2.就绪

线程启动 正在等待CPU发放时间片 也就是说现在线程还是在就绪状态中

3.运行

线程获得CPU 正在执行任务 就会调用 run方法
除非强行停止 或者更高级的线程阻拦 否则会一直运行到任务结束

4.死亡

线程执行完毕 或者被其他线程杀死 一旦死亡后就不会在进入就绪 和 运行状态

5.阻塞

由于某种原因 导致正在运行的线程让出CPU 会走阻塞状态

缺点:无法控制

如果我们退出Activity时 后台还是在继续执行这个线程的话 我们就需要用到了Service 服务 因为Service会一直运行在后台的

Service 是Android的一种机制 服务是运行在主线程上的 所以不能做耗时操作

Service生命周期

oncreate() onDestroy()只会执行一次
开启Service:
1.startService 开启服务
2.stopService 关闭服务(内部会调用onDestroy)
如果不执行这一步就算手动执行onDestroy()方法也不能停止服务

onCreate() - onStartCommand() - onDestroy()

绑定Service
1.bindService() 绑定服务
2.unBIndservice() 解绑服务 (内部调用onUnbind onDestroy() 销毁服务的操作)
onCreate() - onBind() - onUnbind() - onDestroy()

我们可以通过starServie启动一个服务 如果用户需要控制一些后台的洗的的话 我们就通过bindservice绑定这个服务 进行使用

注意: 如果只调用了stopService不会进行解绑 所有的客户端必须进行解绑服务unBIndservice()

启动服务 & 绑定服务的顺序

1.先绑定服务后启动服务
如果当前Service实例先绑定再启动服务时 那么绑定服务将会转为启动服务运行 无论是否销毁Activity 都不会影响这个服务的运行 只有收到销毁情况后才会销毁

2.先启动服务后绑定服务
如果当前Service实例先启动再绑定服务时
服务并不将会由启动服务转为绑定服务运行 还是会和我们的Activity绑定 服务依然是按照启动的生命周期运行 直到你调用了stopService才会销毁

1.启动服务优先级比绑定服务高
2.服务在其托管进程的主线程中运行(UI 线程)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值