3

我有 IntentService 应该通过绑定使用来自另一个服务的引用:

public class BaseIntentService extends IntentService implements ServiceConnection {

    protected NetworkApi network;

    public BaseIntentService() {
        super("BaseIntentService");
    }

    @Override
    public void onServiceConnected(ComponentName name, IBinder service) {
        network = ((NetworkApiBinder) service).getApi();
        // never be invoked
    }

    @Override
    public void onServiceDisconnected(ComponentName name) {
    }

    @Override
    public void onCreate() {
        super.onCreate();
        bindService(new Intent(this, NetworkApi.impl), this, BIND_AUTO_CREATE);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        unbindService(this);
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        // network always null!!!
    }
}

但是当我使用这样的绑定时,永远不会调用 onServiceConnected。我知道 IntentService 不是为绑定模式设计的,但可能有针对此类任务的通用解决方案?

谢谢!

4

1 回答 1

11

但是当我使用这样的绑定时,永远不会调用 onServiceConnected

那是因为你IntentService在绑定请求开始之前就被销毁了。当完成所有未完成的命令IntentService时,会自动销毁。onHandleIntent()

但可能有此类任务的通用解决方案

不要有两个服务。摆脱IntentService并将其逻辑移至其他服务。

于 2013-03-01T14:22:43.900 回答