Почему остановка моего сервиса убивает активность на переднем плане? - PullRequest
0 голосов
/ 25 марта 2011

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

Intent i = new Intent(this, MyService.class);
startService(i);

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

Intent i = new Intent(this, MyService.class);
stopService(i);

Когда ясделайте это, основное действие, которое делает вызов, уничтожается и исчезает.

Думая, что, возможно, служба должна была работать в отдельном процессе, я попытался установить android: process = ": remote" на службу вманифест, но это не изменило поведение.

Кажется, я не могу остановить службу, не убив все приложение.Это можно обойти?

Ответы [ 2 ]

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

Я понял, почему приложение было убито. В методе onDestroy () моего сервиса я отключил приемник вещания следующим образом:

PackageManager pacman = getPackageManager();
pacman.setComponentEnabledSetting(
     new ComponentName(this, MyReceiver.class), 
     PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 
     0);

Этот код отключает широковещательный приемник, определенный в AndroidManifest.xml. Последний аргумент, 0, должен был быть установлен в DONT_KILL_APP. Я изменил код на это, и это решило проблему:

PackageManager pacman = getPackageManager();
pacman.setComponentEnabledSetting(
     new ComponentName(this, MyReceiver.class), 
     PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 
     PackageManager.DONT_KILL_APP);
0 голосов
/ 25 марта 2011

Без журналов мы не можем знать наверняка, но у меня есть догадка, что ваше приложение выдает исключение и что вы молча ловите и закрываете, или у вас есть нечетный критический путь, который вызывает finish.

В любом случае, то, что вы описали, не ожидается, но нам нужно больше информации, чтобы дать лучший ответ

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