Сервис зависает, когда телефон бездействует - PullRequest
0 голосов
/ 15 апреля 2019

У меня есть приложение 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 на разных устройствах.

Следующие нажатия работают нормально.

Любая помощь будет оценена.

Спасибо

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