基础回顾--四大组件之一--Service

今天要复习的应该就是跟Activity密切相关的Service了,同是四大组件之一,平时我们都可以叫它作为服务.它是Android实现程序后台运行的解决方案,就是等于你是老板,跟你交互的是工作车间的员工,但是机器是在无时无刻地运作,帮你实现事情.但是同样道理,机器是需要我们员工车间去启动关联负责的,所以我们的Service也是要依赖于我们的应用程序进程,一旦我们进程被杀死了,那么服务也会被停掉.

Service的存在理由

Service是Android的机制之一,很多人会不解,为什么需要Service,假如我需要不在主线程去操作,那么我可以开启子线程啊,为什么一定要Service?其实,我们可以想一下,我们平时的接受来自服务器数据,其实是不定时接受的,不属于一个长期的连接状态,那么我们假如真的是利用子线程去获取数据,那么当开启子线程的Activity被finish(),那么这个子线程就不会被获得引用了.
另外Service的存在,还是紧密联系到了Activity,还有Broadcast这些组件的.
另外关于Service的线程说法,一般对于我们的Local Service都是在主线程运行的.但是我们可以修改process来确定线程.

启动服务

一般来说,我们开启服务是有两种方法,但是都会涉及到Activity.

startService:
 Intent startIntent=new Intent(this,MyService.class);
 startService(startIntent);

这种调用的开启方法是比较简单的,它一旦被创建就跟我们的调用者没有任何关系,就仅仅是服务在后台运行.

stopService:
 Intent startIntent=new Intent(this,MyService.class);
 stopService(startIntent);

接下来是第二种开启方式

bindService:
   Intent service=new  Intent(this,MyService.class);
   bindService(service,MyConn,BIND_AUTO_CREATE);
   //这里的MyConn 需要我们进行重写
     private class MyConn  implement ServiceConnection{
      public void onServiceConnected(ComponentName  naem,IBinder service){
      }
        public void  onServiceDisconnected(CommponentName name){
     }
}
解绑服务
unbindService(Myconn);

这里我需要跟大家说明一下,就是onBindService的整个调用过程.
1. 我们BindService(Activity中)—->
2. OnBind(Service中会返回一个IBinder的代理对象)—->
3. 我们通过onServiceConnected连接的参数IBinder来使用到Service0—->
4. 这里的使用指的是Service会有一个继承Binder的类,我们可以将Service中的逻辑方法写到这个类上,然后通过IBinder来调用.

生命周期:

onCreate onStart OnDestory onBind onUnbind
由于两种开启方法的生命周期不一样,所以我分开两个来说明:
1. startService
onCreate—>onStart—>OnDestory(注意这个是要在stopService才可以调用,否则会一直在后台运行. )
2. bindService
onCreate()—>OnBind—onStart–>—>onUnbind—>OnDestory
只会调用一次的 onCreate,onBind,onDestory.

注意:
我们开发的时候,经常会使用混合服务.就是说两个方式都使用.那么我就要提醒一下.
1. 同时使用 startService 与 bindService 要注意到,Service 的终止,需要unbindService与stopService同时调用,才能终止 Service.
2. 如果只使用bindService ,只需调用unbindService就可以终止Service.
3. 避免我们会被杀死进程,我们可以使用StartForeground(id,notification)–>类似于我们的音乐播放都会这么做的.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值