对Android Service的一些理解

Service是Android四大组件之一,用于在后台处理一些操作、提供服务,没有提供用户接口、没有界面。 

Service业运行于所属进程的主线程,也不能直接进行网络请求等耗时操作,需要开启新线程来进行耗时操作,或者使用IntentService。

Service有两种启动方式,根据启动方式不同,Service分两种,一种是本地服务,通过startService调用服务,一种是远程服务,通过bindService.

  本地服务,调用组件通过onStart/ onStartCommand()方法开启服务,服务开启后会在后台一直运行,不管调用组件有没有被销毁。因此,通常需要在服务完成后手动的进行服务关闭。关闭服务有两种方式,一是调用组件通过stopService来停止服务,二是Service本身通过stopSelf或者Service.stopSelfResult()来停止。无论调用了多少次startService(),都只需调用一次stopService()来停止。

通常started状态的service执行单任务并且不返回任何结果给启动者。比如当下载或上传一个文件,当这项操作完成时,service应该停止它本身。

远程服务,即bindServie,调用组件可以通过bindService()建立连接,绑定服务,通过unbindService()方法解除绑定,bindService可以被多个调用组件绑定,当所有的调用组件都销毁时,bindService就会自动销毁。一个绑定的service提供一个允许组件与service交互的接口,可以发送请求、获取返回结果,还可以通过夸进程通信来交互(IPC)。

bindServie提供的服务给可被其他应用复用,比如定义一个天气预报服务,提供与其他应用调用即可。


关于生命周期:

一、

  

二关于Service生命周期还有一张比较易懂的图(来源于http://blog.csdn.net/ryantang03/article/details/7770939)


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值