我想了解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}}调用的所有其他函数?
答案 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")
}
查看您的功能是否在打印前调用