У меня есть приложение VoIP, которое получило уведомления GCM с высоким приоритетом, чтобы я мог принять вызов, когда телефон не используется.
public class GCMReceiver extends GCMIntentService {
public void onMessage(Context context, Intent intent) {
...
startService(new Intent(getBaseContext(), ServiceManager.class));
...
}
}
При получении уведомления я создаю новый фоновый сервис.
public class ServiceManager extends Service {
public static Intent serviceIntent;
...
public int onStartCommand(Intent intent, int flags, int startId) {
...
return START_STICKY;
}
...
public void startSipService() {
...
serviceIntent = new Intent(getBaseContext(), SIPProvider.class);
this.startService(serviceIntent);
}
}
Эта служба запускает другую фоновую службу, которая обрабатывает SIP-связь, аудио и т. Д. И т. Д.
public class SIPProvider extends Service {
public static Intent serviceIntent;
...
public int onStartCommand(Intent intent, int flags, int startId) {
...
return START_NOT_STICKY;
}
}
Проблема в том, что по какой-то причине эта служба SIPProvider останавливает обработку. Вот соответствующий logcat:
2019-04-15 14:37:20.392 30439-30439/***.***.*** D/ServiceManager: >> onCreate
2019-04-15 14:37:20.393 30439-30439/***.***.*** I/ServiceManager: >> onStartCommand
2019-04-15 14:37:21.658 30439-30439/***.***.*** I/SIPProvider: >> onStartCommand
2019-04-15 14:37:21.658 30439-30439/***.***.*** D/SIPProvider: OnStart
2019-04-15 14:37:21.834 30439-30439/***.***.*** D/SIPProvider: Listen for phone state
2019-04-15 14:37:21.858 30439-30439/***.***.*** D/SIPProvider: Direct sip start
2019-04-15 14:37:21.863 30439-30439/***.***.*** W/SIPProvider: Creating new handler thread
В 14:37:48 я отправил еще один пуш и кажется, что сервис SIPProvider проснулся.
2019-04-15 14:37:48.110 30439-30465/***.***.*** D/SIPProvider: Start was asked and we should actually start now
2019-04-15 14:37:48.124 30439-30465/***.***.*** D/SIPProvider: Ask pjservice to start itself
2019-04-15 14:37:48.130 30439-30465/***.***.*** D/PjService: Starting sip stack
2019-04-15 14:37:48.168 30439-30439/***.***.*** D/GCMBroadcastReceiver: onReceive()
Есть ли какое-нибудь объяснение этому?
Это происходит, если телефон полностью неактивен в течение 3 часов. Я тестирую Samsung S9, но у меня есть отчеты о пользователях с Android> = 8 на разных устройствах.
Следующие нажатия работают нормально.
Любая помощь будет оценена.
Спасибо