从 OkHttp 拦截器通知 UI



我需要根据拦截器中的布尔值更改UI(我只在拦截器中了解它,它永远不会离开它(。

我可能的解决方案是:
创建像new Handler(Looper.getMainLooper())这样的处理程序,然后执行.post(new Runnable()..),但我不想将UI逻辑弄乱到拦截器类中。

您可以尝试使用 EventBus。

  1. 将以下依赖项添加到build.gradle文件:
dependencies {
// ...
implementation 'org.greenrobot:eventbus:3.1.1'
}
  1. 创建用于保存来自拦截器的数据的类:
public static class InterceptorEvent { /* Add fields you need */ }
  1. 在您的拦截器中,使用以下代码发布事件:
EventBus.getDefault().post(new InterceptorEvent());
    随时随地
  1. 订阅InterceptorEvent
@Subscribe(threadMode = ThreadMode.MAIN)  
public void onInterceptorEvent(InterceptorEvent event) {
// Do whatever you want
}
@Override
public void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
@Override
public void onStop() {
super.onStop();
EventBus.getDefault().unregister(this);
}

我希望我的回答有所帮助。

最新更新