Android Service的总结,service, bindservice,intentservice

这篇应该在周5就写的,奈何人吃五谷杂粮,就要被俗事缠身,周5先是为了办手机实名,跑了三家营业厅,前2家因为我不记得密码了,不能办,最后一家可以办但是他们要维护系统,所以也给我办不了,我去,我这么一良好市民,想办个实名怎么这么难呢。再加上小假结束我又得了肠胃炎,时好时坏,周5早上又被折磨了下,整个人都不好。本来也不想写这篇的,道理基本都懂,但是好记性不如烂笔头,还是记下吧,好了啰嗦这么多,现在写正文了.

Service:就是被定义为执行long-running operation的,在后台运行没有界面,话虽这么说,但是很耗时的操作还是不要放在Service里面,这是因为Service不是独立的进程,也不是独立的线程,它是依赖于应用程序的主线程的,Service运行在UI Thread里面的,耗时操作都懂的会block UI ,使界面没有响应,这里有两个办法解决,1.多线程就是在Service里面另起一个线程 2使用IntentService,主要用来异步请求,它是Service的一个子类,但是自己创建了一个独立于主线程的work thread,看过它的源码就知道,它其实是自己新建了HandlerThread,有自己的loop和消息对列,启动IntentService以后,会把Intent一个一个加到这个独立的消息队列里面,然后通过onHandleIntent方法在一个一个执行。这两个解决方案比起来,显然第一个并发性好,后一个因为要一个一个顺序执行,一个Intent在执行的时候不能打断,如果前一个执行很长时间,就会block后面的任务了

Service有两种状态:

1.一个是通过StartService启动,普通Service,生命周期就是onCreate-onStartCommand-onDestory,尽管多次调用启动Service, onCreate方法只被调用一次,但是onStartCommand会被调用多次,还有它和调用者无关,即使调用它的Activity销毁了,它还能正常在后台运行,还有它不能自己停止,不能自己停止,不能自己停止,重要的事情说3遍,必须通过手动调用方法stopService(),stopSelf()停止或者其它程序把它终止,不然这个Service会一直运行,这个IntentService不一样,IntentService所有intent执行完了,就会自己Destory掉。

2.通过BindService,为什么要有bindService,这是因为虽然Service运行在后台,但是我们有时候还是要和它交流的,所以这里就采用CS模式,bindService可以看成是个服务器端,我们还是可以给它发个request得到个response什么的,至于怎么通讯,基本就靠AIDS(Android 接口定义语言)这里不深入了。生命周期就是onCreate-onBind-onUnBind-onDestory,onBind也只调用一次,它和调用者有关,当所有的调用者都unbind的时候,这个service就销毁了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值