我正在开发一个Android应用程序,问题是令牌过期时,我需要注销用户。现在,我需要检查所有片段中的令牌是否过期。那么有什么办法可以让我从集中的位置执行此任务。
答案 0 :(得分:0)
您是否使用retrofit
?如果是这样,您可以添加一个自定义Interceptor
,它会拦截每个响应并通过重定向到登录来处理401
。
您还可以定义一个SessionHandler
,它需要一个context
,例如,从Interceptor
您将调用sessionHandler.onSessionExpired()
。希望你能想到
答案 1 :(得分:0)
就我个人而言,我更喜欢使用pub / sub模式解决此类问题。通常,当您发现令牌已过期(例如在拦截器中)时,将引发一个事件(命名会话已过期)。另外,还有一些使用者(例如,所有其他活动都对其进行了扩展的BaseActivity)捕获了该事件并对其做出反应(根据您的问题,重定向到LoginActivity)。要实现此方法,您既可以使用一些现成的解决方案(例如greenrobot),也可以使用LiveData进行开发。