本地广播管理器执行顺序



我试图了解BroadcastReceivers如何在Android上工作。我的问题是,从我打电话给sendBroadcast LocalBroadcastManager到收到BroadcastReceiver的时间之间会有延迟吗?调用是否同步?

例如,调用myFunction时,输出是21还是12

myFunction {
  sendBroadcast;
  print "1";
}
myReceiver {
  print "2";
}

如果运行的函数更改为

myFunction {
  sendBroadcast1;
  print "1";
  sendBroadcast2;
  callALotOfOtherFunctions;
}
myReceiver1 {
  print "2";
}
myReceiver2 {
  print "3";
}

myFunction调用的所有其他函数是否会在接收器之前调用?

意图一个接一个地发送,就像消息队列上的任何事件一样。

没有延迟,只是排队等待您的事件/意图得到处理,因为可能还有其他事件/意图需要首先处理。

它们都是在 UI 线程上调用的,该线程循环遍历所有事件(和意图),因此它被称为主 looper 线程。

我相信

BroadcastReceiver 是异步工作的,所以(我不确定)是的,您的函数可以在完成接收器任务之前运行,

你应该尝试这个,看看你自己的结果

myFunction {
  sendBroadcast1;
  print "1";
  sendBroadcast2;
  callALotOfOtherFunctions;
}
myReceiver1 {
  print("rec1 begins")
  sleep(1000)
  print("rec1 ends")
}
myReceiver2 {
  print("rec2 begins")
  sleep(1000)
  print("rec2 ends")
}

查看打印前是否调用了函数

最新更新