我对广播接收器有点困惑。我有一个广播接收器,它在TIME_SET和TIMEZONE_CHANGED动作时触发(代码如下)。我想知道的是,当触发TIME_SET和TIMEZONE_CHANGED动作时,可以同时触发OnDateTimeChanged(参见下面的代码)(并且它的执行重叠),或者总是会在另一个之后触发?根据我做的一些简单的实验,我得到的印象是OnDateTimeChanged的两次执行是连续触发的,没有时间重叠,但我不能100%肯定这一点。如果有人有想法,我会很开心。
<!-- Excerpt from manifest -->
<receiver android:name=".OnDateTimeChanged">
<intent-filter>
<action android:name="android.intent.action.TIME_SET"/>
<action android:name="android.intent.action.TIMEZONE_CHANGED"/>
</intent-filter>
</receiver>
// Broadcast receiver class
public class OnDateTimeChanged extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
// Do some work here
}
}
BTW,在设置 - 日期和时间下切换到自动模式时,可以触发TIME_SET和TIMEZONE_CHANGED,这会改变时间和时区。
-Ali
答案 0 :(得分:0)
逻辑上,它们都会同时执行。在物理上,一次只能占用一个核心,并且可能在另一个核心开始之前完成。在相同条件下,行为可能看起来是一致的。文档本身将其描述为“广播的所有接收者都以不确定的顺序运行,通常是同时运行。”
如果你想让其他接收者有机会跑,你可以调用Thread.yield()。