Android基础--Service应用

Android中有四大组件,Service是其中的一个。

Service的特点:
 1、第一次开启服务时,会创建一个服务对象:oncreate,开启服务会调用onstartCommand;
 2、停止服务时调用ondestroy方法;
 3、服务只能被创建一次,可以多次开启,每次开启时都会调用onstartCommand方法;
 4、服务只能停止一次,如果多次停止不会执行任何操作;

服务的生命生命周期:
 onCreate: 初始化service的实例对象;
 onStartCommand:开启服务;
 onDestroy:销毁实例对象之前调用这个方法做扫尾工作;

在一般情况下Service的生命周期,基本是按照这个步骤来进行的。但是由于以上的方法都无法返回有效的数据。所以google为了解决这个问题,给我们提供了另外一个BindService方法,此方法是可以返回一个IBinder类型的数据的。也就很好的结局了我们需要做业务逻辑处理的问题。

 bindService:绑定服务、开启服务;
 unbindService:解除绑定的服务、停止服务;

特点:

 1、第一次绑定服务时,先创建一个服务对象oncreate,然后绑定服务onBind;
 2、解除绑定的服务时,先解除绑定服务,然后销毁服务的实例对象;
 3、服务只能被绑定一次,多次绑定不会执行任何操作;
 4、服务只能解除一次,如果多次解除绑定程序会抛出异常;
 5、当界面关闭时,服务就被解除绑定了;

绑定Service的步骤:

1.创建一个Service类,并在清单文件中,配置想对应的节点及添加相应的权限。

2.在需要绑定Service的Activity的内部,创建一个意图对象

intent = new Intent(this, TestService.class);//this是上下文意图对象, TestService.class是相关联的服务类

3.调用bindservice方法绑定服务

   //intent 开启service使用的intent
   //conn应用程序与服务之间建立的连接,需要实现ServiceConnection这个接口
   //BIND_AUTO_CREATE开启服务时如果服务对象不存在,就会自动创建一个服务对象
   bindService(intent,conn, BIND_AUTO_CREATE);

4.在Service类中执行业务逻辑,并传递给Activity


  @Override
  public IBinder onBind(Intent intent) {
   System.out.println("--------onBind-----------");
   //绑定服务时返回中间人对象
   return new MyBinder();
  }


  public  class MyBinder extends Binder{
      //此方法是用于调用业务逻辑方法的,也可以用接口中的方法来代替
   public void callMethodInService(){
    //调用服务的业务逻辑方法
    methodInService();
   }
   }

总结:服务最大的作用就在于可以在后台执行业务逻辑代码。所有服务一般适用于以下场景:天气预报、股票软件,检测网络状态提交数据;

你可能感兴趣的:(Android基础--Service应用)