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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值