LocalBroadcastManager执行顺序

时间:2013-12-20 22:00:59

标签: android broadcastreceiver localbroadcastmanager

我想了解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

是否会在接收方之前调用从{{1}}调用的所有其他函数?

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

我相信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")
}

查看您的功能是否在打印前调用