Как привязать сервис (только), когда процесс запущен? - PullRequest
0 голосов
/ 13 марта 2020

Теперь у нас есть такая потребность:

В других процессах есть служба привязки, затем

  1. Когда запускается другой процесс, ему необходимо привязать службу и вызвать метод связывания
  2. Если противоположный процесс не запущен, служба не будет извлечена

Для реализации этой функции мы используем службу следующим образом:

private ServiceConnection mServiceConnection = new ServiceConnection() {
    @Override
    public void onServiceDisconnected(ComponentName name) {
        Log.d(LOG_TAG, "onServiceDisconnected ...");
    }

    @Override
    public void onServiceConnected(ComponentName name, IBinder service) {
        Log.d(LOG_TAG, "onServiceConnected ...");
    }
};
// ...

boolean result = mActivity.bindService(intent,mServiceConnection,0)

Мое намерение состоит в том, что, когда процесс другой стороны не запущен, операция связывания активно не запускает процесс

проверяется, что, когда противоположная служба не запущена, "result" значение равно true, а "mServiceconnection" не вызывается обратно

Это приводит к проблеме:

"bindService(intent,mServiceConnection,0)" - асинхронная операция. Когда мы получаем возвращаемое значение, мы не можем знать, была ли служба успешно привязана во времени без обратного вызова

Мы также не можем ждать в течение некоторого периода времени и судить, успешна ли привязка, существует ли обратный вызов , Это не является строгим

Что я должен делать перед лицом этой ситуации?

пожалуйста, пожалуйста ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...