После долгих поисков по всему, я удивлен не найти ничего об уничтожении андроид деятельности, в то время как есть задача все еще ожидает:Закрыть Уничтожить активность Внутри Асинхронный Метод
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Login);
Button btnLogin = FindViewById<Button>(Resource.Id.btnLogin);
btnLogin.Click += async (sender, e) =>
{
await Authenticate();
};
}
private async Task Authenticate()
{
TextView txtUsername = FindViewById<TextView>(Resource.Id.txtUsername);
TextView txtPassword = FindViewById<TextView>(Resource.Id.txtPassword);
if (await Security.ProcessLogin(txtUsername.Text,txtPassword.Text))
{
StartActivity(typeof(actMaiMenu));
this.Finish();
}
else
{
\\Warn User
txtUsername.Text = "";
txtPassword.Text = "";
txtUsername.RequestFocus();
}
}
Хотя существует очевидная обходной путь в этом случае, мне было интересно, есть ли какие-либо последствия для этого. Например, задача, сохраняющаяся на заднем плане (или, что хуже, вся деятельность).
У меня нет ошибок, несмотря на то, что событие клика не получает статус завершения при успешном входе в систему.
Спасибо, Алекс, за такой подробный ответ. Если задача Authenticate возобновится, в вашем случае вы ее поймаете и вернетесь, что абсолютно нормально. Полностью согласен, что если задача вот-вот застрянет в дальнейшей обработке \ tasks \ whatever, тогда важно сразу же выйти из основной задачи, если она возобновится. Тем не менее, могу ли я подтвердить в этом случае, если это произойдет, будет ли он забираться на этом.Finish(), где он ушел, вернуться из задачи, по мере ее завершения, и завершить выполнение, готов к нажатию кнопки ' еще раз'? – user3280560
Не уверен, что я понимаю вопрос, но вот ответ в любом случае. Если запрос аннулирования запрашивается до завершения Security.ProcessLogin, то следующее, что произойдет, это то, что метод вернется (не вызывая ничего другого). В этот момент метод выполняется финишированием, как и любой другой метод. Если действие возобновлено, а затем btnLogin будет нажат второй раз, будет вызываться весь метод аутентификации (включая Security.ProcessLogin). – AlexC
Я имею в виду, если я не реализую ваше решение. Я не пренебрегаю этим, далеким от, но в моем «простом» примере, если бы было резюме, и я не менял свой код, не так ли? – user3280560