Android为活动初始化LocalBroadcastReceiver的正确位置

Android为活动初始化LocalBroadcastReceiver的正确位置,android,broadcastreceiver,android-broadcast,localbroadcastmanager,Android,Broadcastreceiver,Android Broadcast,Localbroadcastmanager,我有一个android活动,它有如下广播接收器 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver, intentFilter); } private BroadcastR

我有一个android活动,它有如下广播接收器

@Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver, intentFilter);
}

private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
          Log.i("TAG", intent.getAction());
        }
};

问题是,我正在从网络接收消息,根据消息类型,我创建活动或向活动发送广播消息,因为我接收消息的速度非常快,创建活动的消息类型正好在之前到达(几毫秒内)将广播消息发送到同一活动的消息类型,我得到一个错误
HandleIndowVisibility:no activity for token android.os.BinderProxy
研究一点,我发现在发送广播意图之前,可能没有正确创建活动。 所以我让线程休眠了3秒钟

        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

现在一切都按预期进行了,但上面的内容看起来很难看,有点粗糙,有没有更好的方法在活动创建之前发送广播意图?

而不是创建
活动
并向其发送广播
意图
,只需将广播
Intent
的内容放入用于启动
活动的
Intent
中(作为“额外内容”)。然后您不需要3秒钟的延迟,只要在
活动
已经运行的情况下发送广播
意图

而不是创建
活动
并向其发送广播
意图
,只需将广播
Intent
的内容放入用于启动
活动的
Intent
中(作为“额外内容”)。那么你就不需要3秒钟的延迟,只要在
活动
已经运行的情况下发送广播
意图

你能发布异常的消息吗?我看到登录logcat的错误没有任何异常或应用程序崩溃,所以我没有任何stacktraceHmm,如果没有看到其余的代码,很难判断,但是我怀疑问题在于你收到消息后所做的事情(也就是说,你所做的事情依赖于一些不可用的东西)。你可能正在过滤你的logcat,这就是为什么你看不到stacktrace。尝试禁用筛选并查看是否看到完整的异常日志。是否可以发布异常的详细信息?我看到登录logcat时出现的错误,没有任何异常或应用程序崩溃,因此我没有任何stacktraceHmm,如果没有看到其余代码,很难判断,但是我怀疑问题在于你收到消息后所做的事情(也就是说,你所做的事情依赖于一些不可用的东西)。你可能正在过滤你的logcat,这就是为什么你看不到stacktrace。尝试禁用筛选并查看是否看到完整的异常日志。有多个路径可启动该活动,某些路径可能没有该意图,因此无法删除广播意图。然后,您需要在logcat中找到整个堆栈跟踪,然后发布该跟踪,以便我们可以看到代码崩溃的位置。除此之外,我没有足够的信息来帮助您。有多个路径可以启动活动,某些路径可能没有意图,因此无法删除广播意图。然后您需要在logcat中找到整个堆栈跟踪,然后发布,以便我们可以看到代码崩溃的位置。我没有足够的信息来帮助你。