Принцип такой:
Есть пара access i refresh. У access время жизни меньше, у рефреш больше.
Сначала проверяете валидность аксеса, если не валиден, то смотрите на валидность рефреша.
Если рефреш валиден, то отправляете запрос на обновление токена - в ответе приходит новая пара. Если и рефреш просрочен, то выкидываете на логин пейдж.
App auth делает всё это внутри себя
https://github.com/openid/AppAuth-Android