Пользовательский интерфейс Xamarin.Forms не отвечает - PullRequest
0 голосов
/ 04 августа 2020

Я работаю над приложением Xamarin.Forms с использованием библиотеки Prism. В приложении есть телефонный компонент с интеграцией с CallKit и библиотекой SIP. Когда устройство заблокировано, может быть получен звонок, в результате в пользовательском интерфейсе телефона отображается iOS. Пользователь может ответить на звонок и положить трубку. В приложении есть страница Xamarin.Forms для обработки вызовов. Есть события от службы iOS, которая имеет дело с вызовами для взаимодействия с «общим проектом». Проблема, с которой я столкнулся, заключается в том, что когда пользователь разблокирует устройство и возвращается в приложение, пользовательский интерфейс не отвечает.

Сценарий:

  1. Пользователь запускает приложение и входит в систему.
  2. Пользователь блокирует устройство
  3. Входящий вызов принят
  4. Пользователь отвечает на вызов
  5. За кулисами (т. е. собственный пользовательский интерфейс телефона) общается служба вызовов с «общим проектом» для отображения экрана вызова в приложении. Поскольку телефон заблокирован, пользователь не увидит этого сейчас.
  6. Пользователь вешает трубку.
  7. Когда пользователь кладет трубку, служба звонков связывается с «общим проектом», в котором был произведен звонок. прекращено и вернется к предыдущему экрану.
  8. Затем пользователь разблокирует экран
  9. Приложение находится на том же экране, что и при заблокированном пользователем устройстве, но пользовательский интерфейс не отвечает.

Для перехода на страницу вызова я делаю:

await NavigationService.NavigateAsync(targetPage, null, useModalNavigation: null, animated: animated);

и для возврата на предыдущую страницу:

await NavigationService.GoBackAsync(animated: false, parameters: parameters);

NavigationService имеет тип INavigationService от Prism.

Существенный вопрос: что заставит навигацию работать, но в результате пользовательский интерфейс не будет реагировать? Раньше я обнаруживал, что мне нужно выполнять навигацию по основному потоку. Что мне еще нужно искать?

...