Привязка Android к Сервису - PullRequest
0 голосов
/ 09 марта 2011

Я привязываюсь к Сервису, используя context.bindService(bindIntent, connection, Context.BIND_AUTO_CREATE);.Этот метод возвращает true.Но я не соединяюсь.Некоторый код:

// Snippet from method, that connects to service:
boolean result = context.bindService(bindIntent, connection, Context.BIND_AUTO_CREATE);
Log.d(TAG, "is connected: " + connected);
return result;
}

// Connection:
private ServiceConnection connection = new ServiceConnection() {

        public void onServiceConnected(ComponentName name, IBinder service) {
            parser = Parser.Stub.asInterface(service);
            Log.d(TAG, "Connected to service...");
            connected = true;
        }

        public void onServiceDisconnected(ComponentName name) {
            parser = null;
            Log.d(TAG, "Disconnected from service...");
            connected = false;
        }

    };

В конце концов, я не вхожу в метод onServiceConnected: в logcat нет сообщений, кроме D/FrameworkBridge( 926): is connected: false.Любые идеи?

UPD: Я прокомментировал немедленный вызов метода службы (который выбрасывал NPE) после подключения к нему, и все работало хорошо: служба запускается и привязывается к.Похоже, что соединение создается в отдельном потоке, или около того.Есть ли способ заставить мой класс подождать, если соединение действительно установлено?

1 Ответ

1 голос
/ 09 марта 2011

Я столкнулся с той же проблемой и обнаружил, что мне нужно было также вызвать startService, чтобы он заработал: http://developer.android.com/reference/android/content/Context.html#startService(android.content.Intent)

Вот как выглядит мой код:

startService(new Intent(MainActivity.this, WeatherService.class));

bindService(new Intent(MainActivity.this, 
                WeatherService.class), mConnection, Context.BIND_AUTO_CREATE);
...