AIDLservice
2015-08-28 15:51
393 查看
有三种情况:如果直接使用服务,则没有必要进行绑定,但是如果要使用服务里面的方法,则要进行绑定。具体的启动情况有下:
其中很重要一点:bindService和unbindService是成对出现的。
1.当启动时,单独调用bindService方法,在unbindService后,会执行service的onUnbind。之后会调用onDestory
a. 首次使用bindService方法会调用service端的onCreate()->onBinder(),此时如果调用service端的方法是OK的。
b. 再次使用bindservice方法则不会重复调用,即无调用。此时如何调用service端的方法是OK的。
c. 在解绑定时候调用unbindService方法时候(或者绑定服务的activity destory后)会调用service端的onUnbind(),会调用onDestory()方法。此时服务虽然销毁了,但是仍然可以调用service端的方法。
2.当启动时,先调用startService,再调用bindService方法后,在unbindService后,会执行service的onUnbind,不会执行onDestroy方法。除非你在执行stopService.
a. 先调用startService,再调用bindService方法后会执行此调用:onCreate()->onBinder()->onStartCommand() 此时可以调用service端的方法。
b. 再次使用bindservice方法则不会重复调用,即无调用。
c. 在unbindService后,会调用onUnbind(),[b]此时服务解绑定了,但是仍然可以调用service端的方法。[/b]
3. 先调用startService,在调用stopService,会执行service的onDestroy方法。
a. 先调用startService,再调用bindService方法后会执行此调用:onCreate()->onBinder()->onStartCommand() 此时可以调用service端的方法。
I/AIDLService( 1909): btn=2131230720
I/AIDLService( 2092): service onCreate()...
I/AIDLService( 2092): service onStartCommand...
I/AIDLService( 1909): btn=2131230721
I/AIDLService( 1909): btn_bindService
I/AIDLService( 2092): ...service onBind()...
I/AIDLService( 1909): onServiceConnected....
b. 再次使用bindservice方法则不会重复调用。
c. 调用stopService后,仍然可以再调用service端的方法。(但是如何调用了bindService后没有调用unbindService而直接stopservice,那么会导致service没有正常的destory)
其中很重要一点:bindService和unbindService是成对出现的。
1.当启动时,单独调用bindService方法,在unbindService后,会执行service的onUnbind。之后会调用onDestory
a. 首次使用bindService方法会调用service端的onCreate()->onBinder(),此时如果调用service端的方法是OK的。
I/AIDLService( 5832): service onCreate()... I/AIDLService( 5832): ...service onBind()... I/AIDLService( 5809): onServiceConnected....
b. 再次使用bindservice方法则不会重复调用,即无调用。此时如何调用service端的方法是OK的。
c. 在解绑定时候调用unbindService方法时候(或者绑定服务的activity destory后)会调用service端的onUnbind(),会调用onDestory()方法。此时服务虽然销毁了,但是仍然可以调用service端的方法。
I/AIDLService( 5809): unbindService I/AIDLService( 5809): unbindService I/AIDLService( 5832): service onUnbind()... I/AIDLService( 5832): service onDestroy()...
2.当启动时,先调用startService,再调用bindService方法后,在unbindService后,会执行service的onUnbind,不会执行onDestroy方法。除非你在执行stopService.
a. 先调用startService,再调用bindService方法后会执行此调用:onCreate()->onBinder()->onStartCommand() 此时可以调用service端的方法。
startService I/AIDLService( 5832): service onCreate()... I/AIDLService( 5832): service onStartCommand...
bindService 1 I/AIDLService( 5832): ...service onBind()... I/AIDLService( 5809): onServiceConnected....
b. 再次使用bindservice方法则不会重复调用,即无调用。
c. 在unbindService后,会调用onUnbind(),[b]此时服务解绑定了,但是仍然可以调用service端的方法。[/b]
I/AIDLService( 5809): unbindService I/AIDLService( 5832): service onUnbind()...
3. 先调用startService,在调用stopService,会执行service的onDestroy方法。
a. 先调用startService,再调用bindService方法后会执行此调用:onCreate()->onBinder()->onStartCommand() 此时可以调用service端的方法。
I/AIDLService( 1909): btn=2131230720
I/AIDLService( 2092): service onCreate()...
I/AIDLService( 2092): service onStartCommand...
I/AIDLService( 1909): btn=2131230721
I/AIDLService( 1909): btn_bindService
I/AIDLService( 2092): ...service onBind()...
I/AIDLService( 1909): onServiceConnected....
b. 再次使用bindservice方法则不会重复调用。
c. 调用stopService后,仍然可以再调用service端的方法。(但是如何调用了bindService后没有调用unbindService而直接stopservice,那么会导致service没有正常的destory)
I/AIDLService( 2140): btn=2131230724 I/AIDLService( 2140): unbindService I/AIDLService( 2140): unbindService I/AIDLService( 2092): service onUnbind()... I/AIDLService( 2140): btn=2131230725 I/AIDLService( 2140): btn_stopService I/AIDLService( 2140): btn_stopService I/AIDLService( 2092): service onDestroy()...
相关文章推荐
- hdu5319 Painter
- 8.8.2 EXPLAIN Output Format
- ibaits的一个简单的完整的例子
- solr搭建企业级应用搜索(转自http://blog.csdn.net/zdshare/article/details/17756121)
- waiting for device
- The Responder Chain(响应链)
- * daemon not running. starting it now * ADB server didn't ACK * failed to start daemon *
- Go 语言sync中waitgroup使用.小实例
- Python_使用smtplib和email模块发送邮件
- OpenStack Mnaila 2015-08-27 IRC会议内容
- POJ3411--Paid Roads
- HDU 3376--Matrix Again【最大费用最大流 && 经典建图】
- notifier chain — 内核通知链
- Airbnb入华,或重蹈Uber覆辙?
- RAID5和RAID10,哪种RAID更适合你(下)
- RAID5和RAID10,哪种RAID更适合你(上)
- hadoop1 & hadoop2 fair-schduler 配置和使用
- hadoop1 & hadoop2 fair-schduler 配置和使用
- LeetCode题解:Container With Most Water
- 对select()参数fdset的完整理解 http://blog.csdn.net/maray/article/details/8285775