Android中的service

服务:

android中服务是运行在后台的东西,级别与activity差不多。既然说service是运行在后台的服务,那么它就是不可见的,没有界面的东西。你可以启动一个服务Service来播放音乐,或者记录你地理信息位置的改变,或者启动一个服务来运行并一直监听某种动作。

Service和其他组件一样,都是运行在主线程中,因此不能用它来做耗时的请求或者动作。你可以在服务中开一个线程,在线程中做耗时动作。

进程的优先级-----依次升高

1, 空进程打开应用程序后推出,执行ondestory方法进程就属于空进程,系统内存不足时,首先回收,

2, 后台进程打开应用程序后按下home键,执行onstop方法该actity就变成了后台进程

3,服务进程—当进程里有服务运行的时候这个进程就是服务进程,系统会尽量保存有服务的进程,为了保证线程长期的运行,一般就会应用service组件去new一个线程(提高进程的优先级)

4,可见进程,有界面

5,前台进程,可以点击


服务的开发流程如下:

  第一步:继承Service类
  public class SMSService extends Service {}
  
  第二步:在AndroidManifest.xml文件中的<application>节点里对服务进行配置:
  <serviceandroid:name=".SMSService"/>  

service的生命周期

Service的生命周期Service的生命周期方法比Activity少一些,只有onCreate,onStart,onDestroy
我们有两种方式启动一个Service,他们对Service生命周期的影响是不一样的。
  
1通过startService
  Service会经历onCreate->onStart
  stopService的时候直接onDestroy
  
  如果是调用者(TestServiceHolder)自己直接退出而没有调用stopService的
  话,Service会一直在后台运行。
  下次TestServiceHolder再起来可以stopService。  
2通过bindService
  Service只会运行onCreate,这个时候TestServiceHolder和TestService绑定在一起  
  TestServiceHolder退出了,Srevice就会调用onUnbind->onDestroyed
  所谓绑定在一起就共存亡了。
  
要是这几个方法交织在一起的话,会出现什么情况呢?
  一个原则是Service的onCreate的方法只会被调用一次,就是你无论多少次的startService又bindService,Service只被创建一次。如果先是bind了,那么start的时候就直接运行Service的onStart方法,如果先是start,那么bind的时候就直接运行onBind方法。如果你先bind上了,就stop不掉了,对啊,就是stopService不好使了,只能先UnbindService,再StopService,所以是先start还是先bind行为是有区别的。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值