我正在制作使用服务的Mp3播放器,以便在手机关闭或应用最小化时播放音乐。但是,现在当我进入添加播放列表活动并尝试返回主活动时,我收到以下错误消息:
java.lang.RuntimeException: Unable to destroy activity
{dv606.mp3player/dv606.mp3player.MP3Player}:
java.lang.IllegalArgumentException: Service not registered:
dv606.mp3player.MP3Player$6@6ea6ce6
这使我感到困惑,因为它说主要活动本身就是服务而不是。 " MusicService"是一个单独的类。
我使用以下方式关闭主要活动:
@Override
protected void onDestroy() {
super.onDestroy();
appTerminated(isBound, connection);
}
appTerminated:
public static void appTerminated(Boolean b, ServiceConnection c) {
if (b && c != null && musicservice != null) {
musicservice.unbindService(c);
}
}
连接如下:
public static ServiceConnection connection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
musicservice = ((MusicService.MusicBinder) service).getService();
}
@Override
public void onServiceDisconnected(ComponentName name) {
musicservice = null;
}
};
isBound是这样的:
isBound = bindService(intentt, connection, Context.BIND_AUTO_CREATE);
在我的音乐服务课程中,我也有这两种方法:
@Override
public void onTaskRemoved(Intent rootIntent) {
super.onTaskRemoved(rootIntent);
MP3Player.appTerminated(MP3Player.isBound, MP3Player.connection);
}
@Override
public void onDestroy() {
super.onDestroy();
MP3Player.appTerminated(MP3Player.isBound, MP3Player.connection);
}
我在这里完全不知所措,因为错误消息,也因为我认为这是从主要活动实现,绑定和取消绑定服务的方式。
我想我错了。
答案 0 :(得分:0)
musicservice
时,请确保您的unbind
不为空。