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

 

一、生命周期:

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

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

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

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

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操作完成后,返回一系列的返回结果的场景(这种场景也可以通过广播实现,但是操作频繁时会造成性能上的消耗)

 

  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值