Android无法破坏活动服务本身未注册的活动

时间:2017-04-07 12:50:15

标签: android android-activity android-service

我正在制作使用服务的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);
}

我在这里完全不知所措,因为错误消息,也因为我认为这是从主要活动实现,绑定和取消绑定服务的方式。

我想我错了。

1 个答案:

答案 0 :(得分:0)

musicservice时,请确保您的unbind不为空。

相关问题