Service服务的基本用法

服务可以和多个活动绑定,多个服务绑定的服务都是同一个实例。服务的销魂必须满足两个条件,就是服务本身没有运行并且没有和活动绑定在一起。

一、创建一个服务

public class MyService extends Service {

    public class  DownLoadBinder extends Binder
    {
        public void startDownload()
        {
            Log.e("MyService","开始下载");
        }

        public int getProgress()
        {
            Log.e("MyService","获取进度");
            return 0;
        }
    }

    private  DownLoadBinder mBinder = new DownLoadBinder();

    public MyService() {
    }

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

    @Override
    public void onCreate() {
        super.onCreate();
        Log.e("MyService","创建");
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {

        Log.e("MyService","开始时候调用");
        return super.onStartCommand(intent, flags, startId);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.e("MyService","销毁了");
    }
}


二、绑定活动和解绑活动,开启服务和停止服务

private MyService.DownLoadBinder downLoadBinder;

private ServiceConnection connection = new ServiceConnection() {
    @Override
    public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
        //iBinder为Service的onBind()返回的,用于服务和活动通信
        downLoadBinder = (MyService.DownLoadBinder) iBinder;
        downLoadBinder.startDownload();
        downLoadBinder.getProgress();
    }

    @Override
    public void onServiceDisconnected(ComponentName componentName) {
        Log.e("chicai","断开链接");
    }
};

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView((R.layout.first_layout));

    Button button15 = (Button)findViewById(R.id.button15);
    button15.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View view) {
            Intent bindIntent = new Intent(Main2Activity.this,MyService.class);
            bindService(bindIntent,connection,BIND_AUTO_CREATE);//绑定活动
            startService(bindIntent);//开启服务,调用onStartCommand
        }
    });

    Button button14 = (Button)findViewById(R.id.button14);
    button14.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View view) {
            unbindService(connection);//解绑活动
            Intent stopIntent = new Intent(Main2Activity.this,MyService.class);
            stopService(stopIntent);//停止服务
        }
    });
}

首页 我的博客
粤ICP备17103704号