Android 解绑服务问题:java.lang.IllegalArgumentException: Service not registered
问题与处理策略
问题描述
- 在 Android 项目中,解绑(
unbindService()
)一个服务(Service)时,报如下错误
java.lang.IllegalArgumentException: Service not registered
问题原因
- 错误表明在解绑服务时,系统找不到对应的服务注册记录,可能的原因如下
-
重复解绑服务,即多次调用
unbindService()
-
解绑时机不正确,即在服务未绑定时就尝试解绑
处理策略
- 使用标志位记录绑定状态,避免重复解绑服务与解绑时机不正确
private boolean isBound = false;
private ServiceConnection connection = new ServiceConnection() {@Overridepublic void onServiceConnected(ComponentName name, IBinder service) {isBound = true;}@Overridepublic void onServiceDisconnected(ComponentName name) {isBound = false;}
};