0

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

例如,调用 时myFunction,输出将是21or 12??

myFunction {
  sendBroadcast;
  print "1";
}

myReceiver {
  print "2";
}

如果正在运行的函数更改为

myFunction {
  sendBroadcast1;
  print "1";
  sendBroadcast2;
  callALotOfOtherFunctions;
}

myReceiver1 {
  print "2";
}

myReceiver2 {
  print "3";
}

myFunction会在接收者之前调用所有其他调用的函数吗?

4

2 回答 2

1

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

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

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

于 2013-12-20T22:08:36.310 回答
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")
}

看看你的函数是否在打印之前被调用

于 2013-12-20T22:11:17.313 回答