我需要根据拦截器中的 bool 值更改UI(我只在拦截器内部知道它并且它永远不会离开它)。
我想到的可能解决方案:
创建像 new Handler(Looper.getMainLooper())
这样的处理程序,然后执行 .post(new Runnable()..)
,但我不想弄乱 UI 逻辑进入拦截器类。
最佳答案
您可以尝试使用EventBus .
- 将以下依赖项添加到您的
build.gradle
文件中:
dependencies {
// ...
implementation 'org.greenrobot:eventbus:3.1.1'
}
- 创建用于保存来自拦截器的数据的类:
public static class InterceptorEvent { /* Add fields you need */ }
- 在您的拦截器中,使用以下代码发布事件:
EventBus.getDefault().post(new InterceptorEvent());
- 根据需要订阅
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);
}
希望我的回答有帮助。
关于android - 从 OkHttp 拦截器通知 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57957217/