2015-03-23 1 views
0

У меня есть служба для push-уведомлений, которая должна работать в фоновом режиме, даже когда мое приложение закрыто или убито (удалите последние приложения, ...). Я использую это:Служба автоматического запуска Android при остановкеSelft() с START_STICKY

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    return START_STICKY; 
} 

Но у меня есть BroadcastReceiver тоже, который будет вызывать stopSelf() в классе обслуживания при отключении устройства к сети. Этот приемник работает только тогда, когда я использую return START_NOT_STICKY, иначе служба автоматически перезапустится.

Итак, вопрос в том, как использовать stopSelf() с return START_STICKY? Службу нельзя перезапускать при вызове stopSelf(), но будет, когда основной процесс будет убит.

Спасибо за чтение.

// Изменить: Я пытался использовать отделенный процесс для обслуживания, в AndroidManifest.xml:

<service android:name="com.mypackage.name.MyService" 
    android:launchMode="singleTop" 
    android:process=":myservice" /> 

и использовать START_NOT_STICKY, но процесс обслуживания до сих пор гибнут вместе с основным процессом.

ответ

0

Вопрос 1:

Как использовать stopSelf() с возвратным START_STICKY? Вы можете попробовать, когда вы получите трансляцию в своем ресивере, Чтобы снова перезапустить службу с возвратом START_NOT_STICKY, Затем вызовите stopSelf().

Вопрос 2:

Если имя, присвоенное этому атрибуту начинается с двоеточия («:»), новый процесс, частное к применению. Если имя процесса начинается с символа в нижнем регистре, служба будет выполняться в глобальном процессе с этим именем при условии, что у него есть разрешение на это. Так что я предлагаю вам изменить имя android: process = "your custom name".

Смежные вопросы