gpt4 book ai didi

android - 每个服务绑定(bind)是否需要一个 ServiceConnection?

转载 作者:太空宇宙 更新时间:2023-11-03 10:46:46 26 4
gpt4 key购买 nike

我有几个 Android Service,我想在我的 Activity 中绑定(bind)它们,因此我可以监视用户的多个操作。

为了能够绑定(bind)每个服务,我将有多个服务,我是否需要在我的 Activity 中使用多个私有(private) ServiceConnection,如下所示?

/** Defines callbacks for service binding, passed to bindService() */
private ServiceConnection mConnection = new ServiceConnection() {

@Override
public void onServiceConnected(ComponentName className,
IBinder service) {
// We've bound to LocalService, cast the IBinder and get LocalService instance
GPSLocalBinder gpsBinder = (GPSLocalBinder) service;
PhotoLocalBinder photoBinder = (PhotoLocalBinder) service;
gpsService = gpsBinder.getService();
photoService = photoBinder.getService();
mGpsBound = true;
mPhotoBound = true;
}

@Override
public void onServiceDisconnected(ComponentName arg0) {
mGpsBound = false;
mPhotoBound = false;
}
};

或者我是否需要我的 Activity 和服务之间的管理器类,以便更好地使用和理解有界服务?

最佳答案

Is there a need to have one serviceConnection for each android service?

我假设您是在询问是否可以为多个服务重用相同的 serviceConnection。没有必要为每个服务连接都设置一个,但这可能是最好的方法。我在你的代码中看到了这个

        GPSLocalBinder gpsBinder = (GPSLocalBinder) service;
PhotoLocalBinder photoBinder = (PhotoLocalBinder) service;
gpsService = gpsBinder.getService();
photoService = photoBinder.getService();

这很令人困惑......这似乎是一个服务可以转换为两个不同的服务!!

您会意识到 onServiceConnected 回调是最神奇的地方,您(Activity)最终可以获得指向您的服务的指针并开始调用方法并与您的服务交互。如果您想为不同的服务重用相同的 serviceConnection,您需要找出 IBinder 对象属于哪个自定义子类,然后进行适当的转换。呸,太麻烦了。我建议每个服务有一个 serviceConnection

Or do i need a manager class between my activity and the services that provides better usage and understanding of the bounded services?

对于这个问题和您的第一个问题,您可以随心所欲。没有比另一种更好的方法了(恕我直言),最好的方法是您更了解并让您感觉更舒服的方法。

关于android - 每个服务绑定(bind)是否需要一个 ServiceConnection?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22256595/

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