我有一个具有如下所示的BroadcastReceiver的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());
}
};
问题是我正在从网络接收消息,并且根据消息类型,我创建活动或将广播消息发送到活动,因为我接收消息的速度非常快,因此创建活动的消息类型恰好在消息类型之前(几毫秒内)到达将广播消息发送到相同的活动,但在研究一下时出现错误handleWindowVisibility: no activity for token android.os.BinderProxy
,我发现在发送广播意图之前,可能未正确创建活动。因此,我使线程休眠了3秒钟。
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
现在一切正常,但是上面的代码看起来很丑陋,有点笨拙,在活动创建之前,有没有更好的方法发送广播意图?
[而不是创建Activity
并向其发送广播Intent
,只需将广播Intent
的内容放入用于启动Intent
的Activity
中(作为“额外”)。然后,您不需要3秒的延迟,仅在Intent
已在运行时才发送广播Activity
。