我有一个具有如下 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();
}
现在一切都按预期工作,但上面看起来很难看而且有点骇人听闻,有没有更好的方法在活动创建之前发送广播意图?