Запуск активности из службы - PullRequest
1 голос
/ 09 июля 2020

В Android 10 есть ограничение на запуск действий из фона. Я работаю над приложением для звонков по Voip. Итак, из-за этого ограничения я начал Activity из службы через ожидающее намерение. Каждый раз, когда пользователь нажимает «Ответить» в уведомлении Heads up, я перенаправляю его на указание c активности.

Моя проблема в том, что после нажатия на действие «Ответить» в уведомлении действие не запускается быстро. Сначала виден белый экран, а затем загрузка. Из-за этого продолжительность разговора для абонентов A и B отличается. Кроме того, загрузка активности вызова после задержки не является хорошей.

В WhatsApp, как только я нажимаю «Ответить», сразу же запускается активность, тем временем продолжительность вызова также начинается. Так что это действительно хорошо. Я не сталкивался с задержкой загрузки и таймера продолжительности звонка в WhatsApp.

Как я могу добиться этого в моем приложении. Помогите мне с этим.

  1. При тапе ответить сразу ставит статус PJSIP_SC_OK. (Отправка 200 OK)
  2. Другой человек ответит ответом 200 OK.
  3. После этого состояние вызова будет изменено и захвачено, и отправлено в какой-то другой класс для обработки.
  4. Передача необходимого сообщения Activity с помощью обработчика.
  5. Действие, которое получило сообщение, будет обрабатываться в соответствии с этим.
  6. Если действие получило подтвержденное сообщение для вызова, то только экран настройки для подключенного вызова состояние, а затем запуск таймера ....

Время, необходимое для запуска таймера на экране подключенного вызова после первого шага, упомянутого выше, составляет 1 хх секунд (Android 10) и 2 секунды (Android 8).

В Activity onCreate я делаю следующие работы перед показом макета:

  1. Настройка видимости представлений, настройка изображения, а также использование Bitmap для изменения размера изображения. При тестировании обнаружено, что для обработки Activity Oncreate в версии Oreo требуется 0,65 секунды, тогда как в версии Q требуется всего 0,27 секунды. Не только oreo, но и в некоторых более старых версиях.

Вот почему у меня разница во времени ... Что мне делать ??

Как только пользователь нажимает ответ в уведомлении, мне нужно показывать экран подключенного вызова без задержки и без белого экрана. WhatsApp может достичь этого. Итак, как я могу добиться этого в моем приложении для звонков по VoIP ??

Ответы [ 2 ]

0 голосов
/ 20 июля 2020

может быть, потому что вы слишком много работаете в onCreate, и это задерживает рендеринг представления. Уберите часть этого кода из onCreate и посмотрите, сможет ли он ускориться.

0 голосов
/ 18 июля 2020

Без исходного кода немного сложно что-то предложить или попытаться что-то исправить. Потенциально создать ожидающее намерение с помощью пакета и использовать широковещательный приемник для обработки событий с помощью настраиваемого широковещательного сообщения?

...