A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yanwenyong 中级黑马   /  2016-4-29 22:50  /  444 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

关于绑定服务和解绑服务,
其中部分童邪在关闭acvitivy时为了不让程序报错,
因此重写了onStop方法
在这里面调用了解绑方法,
本意是挺好的,我不用手动去解绑了,关闭activity,解绑服务两不误。
但是有时候为了需要,因此添加了一个按钮,用来解绑服务,
这样一来就悲剧了,连续解绑两次,又报错了。


在这里给大家提供一个思路,
第一 、定义一个int类型的成员变量 serviceState  让这个初始值等于0
第二、在绑定服务里面第二个参数对象,其中有个方法ServiceConnection,
在重写这个方法的时候将serviceState的值变成1,
第三、每次解绑服务的时候都对serviceState进行判断,如果值为1.则进行解绑,
同时再将serviceState的值变为0。
这样就完美解决了重复解绑的问题啦

注意:这个方法只是一个不完善的方法,因为根据api说法
只有当service里面的onBind方法的返回值不为null时才会调用ServiceConnection方法,
也就是说 如果onBind方法的返回值为null,那么ServiceConnection这个方法不会运行
那也不会去改变serviceState的值。最终是不会解绑的

诸位还有没有比这个更完善的方法吗?

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马