.net MAUI Android синхронно вызывает StartActivityForResult и ждет вызова OnActivityResult ⇐ C#
-
Anonymous
.net MAUI Android синхронно вызывает StartActivityForResult и ждет вызова OnActivityResult
из моего приложения мне нужно создать новое действие для внешнего приложения, чтобы получить результат в OnActivityResult. Он хорошо работает с StartActivityForResult, затем OnActivityResult вызывается после завершения обработки externalActivity... Таким образом, код вызывающего объекта уже завершен...
Поэтому я хотел бы вызвать родительский метод в моей модели представления, который выполняет код StartActivityForResult в контексте async/await, чтобы иметь линейный бизнес-код без использования обратного вызова в OnActivityResult...
На самом деле
публичный класс MyViewModel { общедоступный асинхронный OnCallExternalIntent() { androidService.CreateExternalIntent() => этот метод вызывает внутри StartActivityForResult, затем работающий поток покидает и вызывается StartActivityForResult. Работает.... } } Но я хотел бы выполнить метод CreateExternalIntent в контексте ожидания, чтобы получить StartActivityForResult вот так
публичный класс MyViewModel { общедоступный асинхронный OnCallExternalIntent() { варotherActivityResult = ждут androidService.CreateExternalIntent(); } } общедоступный класс MainActivity: MainApplication { публичная задача CreateNewActivity() { StartActivityForResult(planeteMonetiqueIntent, транзакция.InteropMessageId); AutoResetEvent.WaitOne(); return Task.FromResult(_otherActivityResult); } } защищенное переопределение void OnActivityResult(int requestCode, Result resultCode, Android.Content.Intent намерение) { Пакет Bundle = Intent.Extras; _otherActivityResult = GetDataFromBundle(); АвтоСбросСобытия.Установить(); } Я выполнил этот процесс для синхронизации с USB-устройством для получения процесса Arduino, и мой код вызывающего абонента работает хорошо с ожиданием...
Я видел эту тему Синхронный startActivityForResult — ожидание завершения действия
Я не могу использовать Инструментарий Инструментарий = новый Инструментарий(); Instrumentation.AddMonitor(planeteMonetiqueIntentFilter, null, false);
instrumentation.StartActivitySync(planeteMonetiqueIntent);
Этот код вызвал ошибку, невозможно выполнить этот код в основном потоке....
Я устал объяснять свою проблему как можно проще...
Спасибо.
Жюльен
из моего приложения мне нужно создать новое действие для внешнего приложения, чтобы получить результат в OnActivityResult. Он хорошо работает с StartActivityForResult, затем OnActivityResult вызывается после завершения обработки externalActivity... Таким образом, код вызывающего объекта уже завершен...
Поэтому я хотел бы вызвать родительский метод в моей модели представления, который выполняет код StartActivityForResult в контексте async/await, чтобы иметь линейный бизнес-код без использования обратного вызова в OnActivityResult...
На самом деле
публичный класс MyViewModel { общедоступный асинхронный OnCallExternalIntent() { androidService.CreateExternalIntent() => этот метод вызывает внутри StartActivityForResult, затем работающий поток покидает и вызывается StartActivityForResult. Работает.... } } Но я хотел бы выполнить метод CreateExternalIntent в контексте ожидания, чтобы получить StartActivityForResult вот так
публичный класс MyViewModel { общедоступный асинхронный OnCallExternalIntent() { варotherActivityResult = ждут androidService.CreateExternalIntent(); } } общедоступный класс MainActivity: MainApplication { публичная задача CreateNewActivity() { StartActivityForResult(planeteMonetiqueIntent, транзакция.InteropMessageId); AutoResetEvent.WaitOne(); return Task.FromResult(_otherActivityResult); } } защищенное переопределение void OnActivityResult(int requestCode, Result resultCode, Android.Content.Intent намерение) { Пакет Bundle = Intent.Extras; _otherActivityResult = GetDataFromBundle(); АвтоСбросСобытия.Установить(); } Я выполнил этот процесс для синхронизации с USB-устройством для получения процесса Arduino, и мой код вызывающего абонента работает хорошо с ожиданием...
Я видел эту тему Синхронный startActivityForResult — ожидание завершения действия
Я не могу использовать Инструментарий Инструментарий = новый Инструментарий(); Instrumentation.AddMonitor(planeteMonetiqueIntentFilter, null, false);
instrumentation.StartActivitySync(planeteMonetiqueIntent);
Этот код вызвал ошибку, невозможно выполнить этот код в основном потоке....
Я устал объяснять свою проблему как можно проще...
Спасибо.
Жюльен
Мобильная версия