0

我的应用程序的 5 个活动中的每一个都有以下代码。我想保持绑定到这五个活动的服务运行。它将在后台播放音乐。然而,当用户离开这五个活动中的任何一个时,服务应该被终止。使用下面的代码,我可以得到它,以便在活动之间导航时在后台播放音乐。但服务在离开应用程序后继续运行。解决这个问题的最佳方法是什么?来点创意怎么样。

我把这个 Toast 消息放在服务的 onDestroy 方法中,这样我就可以知道服务何时停止。

 Toast.makeText(this, "My Service Destroyed", Toast.LENGTH_LONG).show();

当我离开应用程序时,我从来没有看到任何 Toast 消息弹出。其他 toast 消息确实表明该服务已启动。

@Override
public void onPause() {
    super.onPause();
    unbindService(serviceConnection);
}

@Override
public void onResume() { 
    //After a pause OR at startup
    super.onResume();
    //add this to the onResume of the activity
    //  startService(new Intent(this, AudioService.class));
    bindService(new Intent(this, AudioService.class), 
                  serviceConnection, Context.BIND_AUTO_CREATE);

}
4

1 回答 1

1

根据此处的文档

多个客户端可以一次绑定到服务。当客户端完成与服务的交互时,它调用 unbindService() 来解除绑定。一旦没有客户端绑定到该服务,系统就会销毁该服务。

因此,也许您在一项活动中缺少一些未绑定的内容。您可以通过在服务的onBindonUnbind方法中打印日志来检查这一点。

于 2012-12-17T11:21:58.297 回答