gpt4 book ai didi

java - Activity 娱乐后连接到服务

转载 作者:行者123 更新时间:2023-11-30 11:37:49 25 4
gpt4 key购买 nike

我有播放音乐的 Activity 和服务。 onCreate of activity 我 startService 并尝试创建一个 ServiceConnection,在 ServiceConnection 的 onServiceConnected 中我初始化服务,所以在此之后它不为空。然后我将服务绑定(bind)到这个服务连接。

因此,我的 musicService 不为空,应用程序正常运行,服务可以发送前台通知。假设我旋转了我的设备和屏幕,我的 Activity 调用了 onDestroy 并调用了 onCreate。我的 musicService 继续播放,但在 onCreate 中有 startService,再次创建 ServiceConnection 和 bindService,应用程序因 null musicService 而崩溃。

我透露这是因为现在从未调用 ServiceConnection 的 onServiceConnected。我应该怎么做才能连接到我在第一个 Activity 开始时创建的 musicService?

我的代码在每个 onCreate 上运行:

    Intent intent = new Intent(this, MusicPlaybackService.class);
startService(intent);
serviceConnection = new ServiceConnection() {

public void onServiceConnected(ComponentName className,
IBinder service) {
LocalBinder binder = (LocalBinder) service;
musicPlaybackService = binder.getService();
}

public void onServiceDisconnected(ComponentName arg0) {
}
};
bindService(intent, serviceConnection, 0);

最佳答案

我不知道我做了什么,但它有效。现在我有了这段代码。

    Intent intent = new Intent(this, MusicPlaybackService.class);
MyApplication.getAppContext().startService(intent);
serviceConnection = new ServiceConnection() {

public void onServiceConnected(ComponentName className,
IBinder service) {
LocalBinder binder = (LocalBinder) service;
musicPlaybackService = binder.getService();
// now onServiceConnected calls on screen rotation.
}

public void onServiceDisconnected(ComponentName arg0) {
}
};
MyApplication.getAppContext().bindService(intent, serviceConnection, BIND_AUTO_CREATE);

关于java - Activity 娱乐后连接到服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13899515/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com