Android中service服务生命周期以及启动方式的区别

 

一、生命周期:

startService启动方式:onCreate()--->onStartCommand() --->onDestroy();

bindService启动方式:onCreate()--->onBind() --->onUnbind()--->onDestroy();

我们通过官方给出的一张图片来体会一下:

Android中service服务生命周期以及启动方式的区别_第1张图片

二、启动方式(基本使用方法):

startService:

Intent mIntent=new Intent(MainActivity.this,startServiceDemo.class) ;

startService(mIntent);//直接启动服务方式启动

stopService(mIntent);//停止服务

bindService:

ServiceConnection serviceConnection=new myServiceConnect();

Intent mBindIntent=new Intent(MainActivity.this,bindServiceDemo.class);

bindService(mBindIntent,serviceConnection,BIND_AUTO_CREATE);

unbindService(serviceConnection);

 实现ServiceConnection接口

 public class myServiceConnect implements ServiceConnection {
        //绑定成功之后回调,Service中传递的数据,在此中接收
        @Override
        public void onServiceConnected(ComponentName componentName, IBinder iBinder) {

        }
        //
        @Override
        public void onServiceDisconnected(ComponentName componentName) {

        }
    }

三、启动方式区别:

1、生命周期的不同:startService生命周期为onCreate

2、重复调用是调用方法不同:

startService启动方式:重复调用时,onCreate()方法只会创建调用一次,startCommand()会每次都会被调用

            bindService启动方式:重复调用时,onCreate()与onBind()都只会调用一次

3、与activity之间关系不同

startService启动方式:与activity之间没有什么关系,对应的activity被销毁时,不影响service

bindService启动方式:与activity绑定,当对应的activity销毁时,对应的服务也销毁

4、应用场景不同:

startService启动方式:与activity没有什么关系,所以常用于,只指定Service的操作,不需要service返回操作结果,不需要与Service建立联系的场景

bindService启动方式:activity需要Service操作完成后,返回一系列的返回结果的场景(这种场景也可以通过广播实现,但是操作频繁时会造成性能上的消耗)

 

你可能感兴趣的:(Android开发)