我需要根据拦截器中的布尔值更改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);
}
我希望我的回答有所帮助。