Как связать этот сервис в Android? - PullRequest
9 голосов
/ 17 февраля 2010

Это код в моем Activity. Инициируйте Intent , затем Connection , верно?

hello_service = new Intent(this, HelloService.class);
hello_service_conn = new HelloServiceConnection();
bindService( hello_service, hello_service_conn, Context.BIND_AUTO_CREATE);

Но мой вопрос ... что происходит внутри Соединения?

   class HelloServiceConnection implements ServiceConnection {
        public void onServiceConnected(ComponentName className,IBinder boundService ) {

        }
        public void onServiceDisconnected(ComponentName className) {

        }
    };

Может кто-нибудь сказать мне, какой код я вставил в onServiceConnected и onServiceDisconnected ?

Мне просто нужно базовое соединение, чтобы мои Activity и Service могли общаться друг с другом.

Редактировать: Я нашел хороший учебник, и я действительно могу закрыть этот вопрос, если кто-то не хочет отвечать. http://www.androidcompetencycenter.com/2009/01/basics-of-android-part-iii-android-services/

Ответы [ 3 ]

16 голосов
/ 10 января 2011

Я хотел бы отметить, что если вы будете следовать примерам сервисов, предоставляемых Google, то ваш сервис будет терять память, см. Этот превосходный пост в этом разделе о том, как это сделать правильно (и проголосуйте за связанную ошибку Google)

http://www.ozdroid.com/#!BLOG/2010/12/19/How_to_make_a_local_Service_and_bind_to_it_in_Android

5 голосов
/ 17 марта 2011

Следует избегать привязки к сервису из Activity, так как это вызывает проблемы при изменении конфигурации Activity (например, если устройство повернуто, действие будет создано заново с нуля, и привязка должна быть создана заново).
Пожалуйста, обратитесь к комментарию от Commonsware к следующему сообщению на stackoverflow
Связь с активностью из службы (LocalService) - Android Best Practices

1 голос
/ 26 ноября 2014

Чтобы подключить службу к действию, все, что вам нужно написать в реализации ServiceConnection, это:

@Override
public void onServiceDisconnected(ComponentName name) {
mServiceBound = false;
}

@Override
public void onServiceConnected(ComponentName name, IBinder service) {
MyBinder myBinder = (MyBinder) service;
mBoundService = myBinder.getService();
mServiceBound = true;
}

Здесь mBoundService является объектом вашей связанной службы.Взгляните на этот пример Bound Service .

...