在我的应用程序中,我必须收到USER_PRESENT和AIRPLANE_MODE意图。但是每个意图都被广播了两次(有时是三次)我不想要。我试图使用SharedPreferences来解决这个问题,但我需要唯一地识别每个意图(如果它有任何'id'或时间戳等)。
以下是我试图只允许一次onReceive调用的代码。
@Override
public void onReceive(Context context, Intent intent) {
final SharedPreferences instanceCount = context.getSharedPreferences("Instances",Context.MODE_WORLD_WRITEABLE);
SharedPreferences.Editor instance_editor = instanceCount.edit();
if(instanceCount.getBoolean("instance",true))
{
instance_editor.putBoolean("instance",false);
instance_editor.commit();
}
else
{
instance_editor.putBoolean("instance",true);
instance_editor.commit();
return;
}
.
.
.
.
}
任何人都可以帮忙解决这个问题。谢谢:)
答案 0 :(得分:0)
这些是系统广播,您无法控制广播的次数。使您的接收器具有幂等性,例如,即使多次调用它也会保持相同的状态。不是计算广播,而是保存应用的当前状态,并在收到广播时进行检查。如果您已处于所需状态,请不要执行任何操作。否则,根据需要更改状态并保存。