Привязка к сервису, который уже запущен BroadcastReceiver, создает новый экземпляр сервиса - PullRequest
4 голосов
/ 15 мая 2011

Мое приложение использует службу, которая запускается BOOT_COMPLETE BroadcastReceiver следующим образом:

public void onReceive(Context context, Intent intent) {
    context.startService(new Intent(context, MyService.class));
}

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

getApplicationContext().bindService(new Intent(getApplicationContext(), MyService.class), 
    _serviceConnection, Context.BIND_AUTO_CREATE);

создается новый экземпляр службы, хотя первый экземпляр (созданный BroadcastReceiver) все еще работает. Я зарегистрировал идентификаторы процесса в методе onCreate () службы и первый служба выполняется в процессе, отличном от действия, второй экземпляр создается в том же процессе, что и действие. Я попытался установить аргумент android: process в служебном элементе манифеста (как с начальным: так и без), но результат остался прежним.

Как связать службу, запущенную в другом процессе, вместо создания нового экземпляра в процессе, в котором выполняется действие?

1 Ответ

0 голосов
/ 22 июня 2011

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

...