Android-Service基本使用

基本概念

当程序进行比较耗时的操作时,用户希望 他们能在后台运行,又不影响用户的其他操作,这就有了service.
service 作为 长期运行在后台的组件,通常用户不进行手动关闭,它就会一直在后台运行。
例如  播放音乐,访问网络 ,下载文件 。。。

分类

service 分为两种
一种是 startService
主要生命周期方法有 Service:onCreate() –>onStartCommand() –>onDestroy()
特点: 1 调用者通过startService 方法启动,通过stopService 方法来停止服务
2 服务启动之后 ,服务与调用者没有任何关系
3 重复调用时 仅会创建一次service 不会重新实例化 ,但会多次调用onStartCommand 方法
4 通常只启动,不返回值

另一种是 bindService
生命周期方法bindService(intent,conn,flag)->Service:onCreate()->Service:onBind()->Service:onUnBind() –>Service:onDestroy()
特点 : 1 通过bindService 方法启动
2 一个服务可以有多个绑定者,只有其中一个调用者进行bind ,服务就会启动 ,当所有的调动者都退出了服务, 服务才会停止.
3 重复调用时 仅会创建一次service 也是不会重新实例化 , 只会调用一次onBind 方法
4 有返回值后 可以进行通讯

startService 使用细节

1 startService 和 stopService 传递的 intent 可以不用全局变量标记,只要 service 的类名相同,启动和停止的service 就是同一个
2 service 的onStartCommnd方法 默认是执行在主线程的 如果有耗时操作,一定要在子线程中执行,防止出现 应用程序无反应 现象, 当然 在销毁时 也要停止线程。

bindService使用细节

1 绑定服务 和解绑服务的ServiceConnection 必须是同一个 ,用全局变量标记。
2 通讯注意

其他

1 一个绑定只能解绑一次 ,多次解绑会有问题
解决方案:为unbindService 方法加上 try–catch 代码块
2 既需要长期后台运行 又需要与服务进行通讯 可以采用 混合调用 方式
混合调用步骤
a 开启服务 startService
b 绑定服务 bindService
c 解绑服务 unbindService
d 停止服务 stopService
3 解绑服务通常是在每个调用服务的activity 的onDestroy 方法中去解绑服务

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值