我试图了解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")
}
查看打印前是否调用了函数