2016-09-27 2 views
1

У нас возникла странная проблема. Не уверен, что это дизайнерский недостаток существующего приложения. Ваша помощь/предложение приветствуются.Как закрыть/закрыть текущий экземпляр приложения Xamarin.Forms при загрузке нового

У нас есть приложение Xamarin.forms. Предназначен как для iOS, так и для Android.

Проблема возникает главным образом в приложении для Android.

поток Применения:

  • как только мы выйти из приложения, приложение открывает выход из системы деятельности и удалять данные пользователя и другие данные.
  • открывает новое действие для входа в систему, которое содержит реализацию единого входа клиента
  • при успешном входе в систему приложение устанавливает информацию о пользователе и извлекает данные из веб-службы.
  • затем вызывает метод LoadApplication так, что поток возвращается в основном приложении

Теперь, если пользователь выполняет выход из системы/вход в системе несколько раз, его открытие нового экземпляра приложения с помощью вызова метода LoadApplication и отображение главного экрана

Поэтому, когда пользователь нажимает кнопку «Назад» на домашней странице, приложение не закрывается и отображает предыдущий экземпляр того же приложения. Пользователь должен нажать кнопку возврата несколько раз (в зависимости от того, сколько времени пользователь выполняет logout-login).

Есть ли что-нибудь еще, чтобы остановить это? Можно ли закрыть текущий экземпляр приложения до вызова LoadApplication?

Закрепленный в течение длительного времени.

ответ

2

Я бы попытался избежать вызова LoadApplication более одного раза. Вы должны контролировать стек навигации.

Учитывая вы на LogoutPage

  • демонтировать все виды через PopToRootAsync
  • показать столб LoginPage
await Navigation.PopToRootAsync(false); 
await Navigation.PushAsync(new LoginPage(), true); 

Этот блог может быть стоит чтение: https://jfarrell.net/2015/01/22/understanding-xamarin-forms-navigation/

+0

Основная проблема - функция входа/выхода из системы реализована с использованием единого входа клиента. –

+0

И почему это проблема? –

+0

Кроме того, SSO может быть реализовано только с native. у нас есть корневая страница вида master-detail и по умолчанию выбран первый пункт (Домашняя страница) из меню гамбургера.И в том же меню гамбургера у нас есть страница выхода. Таким образом, когда пользователь нажимает на пункт выхода из меню гамбургера, приложение загружает страницу выхода, которая в свою очередь вызывается из окна выхода из системы вывода, и, следовательно, приложение начинает выход из системы. После завершения выхода из системы приложение начинает действие входа в систему, в котором реализована система единого входа с успешной регистрацией и неудачными обратными вызовами входа. После успешного входа в систему обратный вызов приложения вызывает метод LoadApplication. –

0

Пожалуйста, попробуйте это.

https://stackoverflow.com/a/36885388/1941942

[Activity (NoHistory = true)] 
public class LoginActivity : Activity { } 

Спасительная ошибка экземпляра пошел через некоторое время после я реализую его на MainActivity.