从 OkHttp 拦截器通知 UI

Notify UI from OkHttp Interceptor

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

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

您可以尝试使用 EventBus

  1. 将以下依赖项添加到您的 build.gradle 文件中:
dependencies {
    // ...
    implementation 'org.greenrobot:eventbus:3.1.1'
}
  1. 创建 class 以保存来自拦截器的数据:
public static class InterceptorEvent { /* Add fields you need */ }
  1. 在您的拦截器中,post 事件使用以下代码:
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);
}

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