【发布时间】:2020-10-28 15:51:24
【问题描述】:
我正在尝试使用 Otto Event Bus 将一个事件从 SplashActivity 传递到 LoginActivity,后者是 2 o 3 个活动,稍后会使用:
SplashActivity
@Override
public void onStart() {
super.onStart();
BusProvider.getInstance().register(this);
if(UtilityManager.isAppOpenedFromNotificationTap(this)){
BusProvider.getInstance().post(new AppOpenedFromNotificationClickEvent());
}
}
@Override
public void onStop() {
super.onStop();
BusProvider.getInstance().unregister(this);
}
我正在获得价值:
登录活动
@Override
public void onStart() {
super.onStart();
BusProvider.getInstance().register(this);
}
@Override
public void onStop() {
super.onStop();
BusProvider.getInstance().unregister(this);
}
@Subscribe
public void onAppOpenedFromNotificationEvent(AppOpenedFromNotificationClickEvent event) {
Log.e("LOGIN", "ARRIVED" );
appOpenedFromNotification = true;
}
我放入订阅中的这些日志永远不会显示。什么问题?
【问题讨论】:
-
SplashActivity 发送事件时是否可能还没有创建(并启动)LoginActivity;在这种情况下,LoginActivity 尚未注册,因此永远不会收到事件。
-
可能,我需要重新考虑流程。
-
如果您想稍后处理该事件或准备好在您的登录活动中准备好组件时被拾取,您可以创建一个足以满足 @987654321 的粘性事件@