巴中市万纵网络科技有限公司
首页 | 联系方式 | 加入收藏 | 设为首页 | 手机站

产品目录

联系方式

联系人:业务部
电话: 00126-83979
邮箱:service@q235cwfgg.com

当前位置:首页 >> 新闻中心 >> 正文

Service的两种启动方式和区别?

字号:
摘要:Service的两种启动方式和区别?
第一种启动方式:startService(Intent)

启动服务 生命周期方法流程:onCreate --- > onStartCommand

关闭服务:stopService(Intent)
关闭服务 生命周期方法流程 :onDestory

第二种启动方式:bindService(Intent , ServiceConnection , flag)

启动服务 生命周期方法流程:onCreate --- > onBind

关闭服务:stopService(Intent)
关闭服务 生命周期方法流程 :onUnBind ----> onDestory

区别:

startService启动Service ,Service有独立的生命周期,不依赖该组建;
多次调用startService方法,会重复调用onStartCommand方法;
必须通过stopService或者stopSelf来停止服务(IntentService会自动调用stopSelf方法)

bindService启动Service,多次调用此方法,只会调用一次onBind方法;
bindService,Service 依赖于此组件,该组件销毁后,Service也会随之销毁。

扩展:
1,同一个Service,先启动startService,然后在bindService,如何把服务停掉?

无论被startService调用多少次,如需要stopService或者stopSelf方法 一次;
调用n次bindService,必须调用n次unBindService方法;
因此,需要调用一次stopService(或者stopSelf)方法,和n次unBindService方法,执行顺序没有要求,
最后一个stopService或者unBindService方法会导致Service的 onDestory执行。

2,Service的生命方法是运行在那个线程中?

Service默认运行在主线程,所以其生命方法也是运行在主线程中,如果需要在Service中进行耗时操作,必须另起线程(或者使用IntentService)否则会引起ANR。