Допустим, у меня есть WebClient
, который должен проходить повторную аутентификацию каждые 60 минут, чтобы быть актуальным.У меня есть AsyncTask
с именем ReauthenticateTask
, который обрабатывает сетевые ресурсы, необходимые для повторной аутентификации моего клиента.Каждый раз, когда пользователь выполняет какое-либо действие, требующее WebClient
, я проверяю его подлинность перед продолжением.В большинстве случаев это работает, но когда пользователь на долгое время выходит из моего приложения и возвращается обратно, мое приложение вылетает, потому что я пытаюсь сделать звонок с просроченным (больше не прошедшим проверку подлинности) клиентом.
Мой вопрос: где я могу добавить свою проверку подлинности, чтобы я мог убедиться, что мой WebClient
обновлен, прежде чем продолжить?В частности, мне нужно делать эту проверку каждый раз, когда пользователь делает вкладки безопасными.
Я пытался добавить его в onResume () и onStart (), но я не уверен, как заставить onStart () ждатьчтобы мой ReauthenticateTask
завершился, прежде чем продолжить ...
Это то, что я пробовал в моем ActivityHome:
@Override
protected void onStart() {
super.onStart();
// Need to make sure we are authenticated
if (!App.getAccountHelper().isAuthenticated()) {
new Utils.ReauthenticateTask(new ReauthenticateListener() {
@Override
public void UserAuthenticated() {
// resume onStart() safely
}
}).execute();
}
// else client is authenticated
}
ReauthenticateTask:
public static class ReauthenticateTask extends AsyncTask<Void, Void, Void> {
ReauthenticateListener listener;
public ReauthenticateTask(ReauthenticateListener listener){
this.listener = listener;
}
@Override
protected Void doInBackground(Void... voids) {
// do reauthentication stuff
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
listener.UserAuthenticated();
}
}