Android 服务Service

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tiger_gy/article/details/86304516

                                   Android 服务Service

    作为android四大组件之一,服务的创建方式与其他组件是一样的。首先定义一个类继承Service,实现该实现在方法,然后在清单文件中配置。service是看不见,activity是可以看见的。

  服务的启动方式分为 startService和bindService两种

 startService启动服务的特点:

        第一次点击按钮开启服务:执行onCreate,onStartCommand

        第二次点击按钮开启服务:执行onStartCommand

        服务一旦被开启,服务就会在后台长期运行,直到用户手工停止。

bindService启动服务的特点:

        1、第一次点击按钮会执行服务的oncreate方法和onbind方法

        2、调用者(activity)与服务之间不同时创建,但是同时销毁

        3、服务不可以多次解绑,多次解绑会报异常。

        4、通过bind方式开始服务,服务不能再设置页面找到,相当于是隐形的服务

通过bindService方式启动服务可以调用服务里面的方法。步骤:

1、在服务内部创建一个方法,用来被activity调用。

2、在服务内部创建一个类继承Binder

 //定义中间人对象 IBinder
    private class MyBinder extends Binder implements IService{
        public void 方法(int money){
            //调用服务里面的方法
            服务方法(money);
        }
       
    }

3、将定义的类对象在IBinder中返回

    @Override
    public IBinder onBind(Intent intent) {
        return new MyBinder();
    }

4、在activity的中调用bindService,目的是为了获取我们在service中创建的对象。

 Intent intent=new Intent(this,DemoService.class);
 myconn=new Myconn();
 bindService(intent,myconn,BIND_AUTO_CREATE);

5、在activity中创建一个类,实现ServiceConnection

  private class Myconn implements ServiceConnection{

        @Override
        public void onServiceConnected(ComponentName name, IBinder service) {
            //获取中间人对象
            myBinder = service;
        }

        @Override
        public void onServiceDisconnected(ComponentName name) {

        }
    }

6、服务连接对象创建好之后,就可以调用服务里面的方法了

7、当activity销毁的时候解绑服务

@Override
    public void onDestroy(){
        unbindService(myconn);
        super.onDestroy();
    }

猜你喜欢

转载自blog.csdn.net/tiger_gy/article/details/86304516