Android Service的bindService和startService混合使用及其关闭分析
来源:互联网 发布:书法集字软件 编辑:程序博客网 时间:2024/05/19 14:02
面试一个公司,和那边技术负责人讨论了一个关于启动一个Service,首先问了我一下有什么启动方式,然后各自生命周期是怎样的,都一一回答,接着就问如果一个Service通过两种方式使用,然后怎么进行关闭,这个问题倒从没思考过,也没有这样做过这样的业务处理。我理解的是在Service 业务处理完,Service自己进行stopself()关闭即可。下面进行一下综合分析及总结。
1.startService启动方式过程及生命周期:
onCreate()–> onStartCommand()/onStart()—> onDestory();
1)创建服务onCreate()在整个生命周期仅执行一次,每次调用服务都会执行onStart()或onStartCommand();
2)停止服务onDestory()在整个生命周期仅执行一次;
3)服务一旦启动,生命周期将不受限于UI线程。应用(Activity)终止,服务仍然在后台运行;
4)直接启动的服务,其它应用不能调用其中的功能。
2.bindService绑定方式过程及生命周期:
onCreate() —> onBind() —> onUnbind()–> onDestory();
1)创建服务onCreate()在整个生命周期仅执行一次;
2)每次调用服务必须首先bindService/onBind,执行unbindService/onUnbind后不能调用;
3)服务的生命周期受限于UI线程。一旦应用(Activity)终止,服务将onDestory销毁;
4)可以在绑定后调用服务里的功能。
1.如果先bindService,再startService:
在bind的Activity退出的时候,Service会执行unBind方法而不执行onDestory方法,因为有startService方法调用过,所以Activity与Service解除绑定后会有一个与调用者没有关连的Service存在
2.如果先bindService,再startService,再调用Context.stopService
Service的onDestory方法不会立刻执行,因为有一个与Service绑定的Activity,但是在Activity退出的时候,会执行onDestory,如果要立刻执行stopService,就得先解除绑定
3 先startService,再bindService。
首先在主界面创建时,startService(intent)启动方式开启服务,保证服务长期后台运行;
然后调用服务时,bindService(intent, connection, BIND_AUTO_CREATE)绑定方式绑定服务,这样可以调用服务的方法;
调用服务功能结束后,unbindService(connection)解除绑定服务,置空中介对象;
最后不再需要服务时,stopService(intent)终止服务。
- Android Service的bindService和startService混合使用及其关闭分析
- 【Android 界面效果34】Android里Service的bindService()和startService()混合使用深入分析
- Android里Service的bindService()和startService()混合使用深入分析
- Android里Service的bindService()和startService()混合使用深入分析
- Android里Service的bindService()和startService()混合使用深入分析
- Android里Service的bindService()和startService()混合使用深入分析
- Android里Service的bindService()和startService()混合使用深入分析
- Android里Service的bindService()和startService()混合使用深入分析
- Android里Service的bindService()和startService()混合使用深入分析
- Android里Service的bindService()和startService()混合使用深入分析
- Android里Service的bindService()和startService()混合使用深入分析
- Android里Service的bindService()和startService()混合使用深入分析
- Android里Service的bindService()和startService()混合使用深入分析
- Android里Service的bindService()和startService()混合使用深入分析
- Android里Service的bindService()和startService()混合使用深入分析
- Android里Service的bindService()和startService()混合使用深入分析
- Android里Service的bindService()和startService()混合使用深入分析
- 【Android一般进阶】startService和bindService混合使用分析
- 初步认识JVM
- JAVA操作Hbase管理类HbaseManage基本详细操作
- java每日一练
- echarts仪表盘(ie8中0显示异常)
- Codeforces845C
- Android Service的bindService和startService混合使用及其关闭分析
- JAVA学习57_ Java千百问_02基本使用(003)_不使用IDE如何打jar包
- python 经典100例 (61-80)
- jquery validate 的自定义验证开始时间不能大于结束时间
- parallel studio xe 2017 update4 编译器套件学生版下载及密钥的申请
- 【NOI2004】郁闷的出纳员(splay)
- 排序算法-交换排序之快速排序
- 简单的程序诠释C++ STL算法:copy
- 【物联网云端对接-4】通过MQTT协议与百度云进行云端通信