1.问题引入
在客户端开发中,我们可能会遇到token失效问题,这个时候我们可以刷新token或者跳转到登录页面,这里我们就给出如何统一处理token失效问题,基于Retrofit。
2.解决方案
在BaseFilterObserver(implements Observer)中重写onNext方法
public void onNext(@NonNull ResultStatus t) {
if (t.getCode()==401){
ActivityAnimationUtil.INSTANCE.enterActivityAnimation(BaseApplication.Companion.getActivity(),RegisterOrLoginActivity.class);
}
}
当token失效返回特定的错误码,然后跳转到登录页面。
跳转activity我们需要一个Activity实例对象。我们可以维护一个activity栈或者通过ActivityLifecycleCallbacks接口获取,这里给出获取activity的方法。在BaseApplication中初始化
private fun initActivity() {
registerActivityLifecycleCallbacks(object : ActivityLifecycleCallbacks {
override fun onActivityPaused(activity: Activity) {
mActivity = activity
}
override fun onAct