在BroadcastReceiver中加入时间判断,判断接收到的消息是否是过时的消息。
示例代码如下:
public class MyReceiver extends BroadcastReceiver {
private static final String ACTION = "com.example.ACTION_MSG_RECEIVED";
private static final long VALID_TIME = 60 * 1000; // 有效时间为1分钟
@Override
public void onReceive(Context context, Intent intent) {
long receiveTime = System.currentTimeMillis();
if (ACTION.equals(intent.getAction())) {
long sendTime = intent.getLongExtra("send_time", 0);
if (sendTime > 0 && receiveTime - sendTime <= VALID_TIME) {
// 消息在有效时间内,进行处理
String msg = intent.getStringExtra("msg");
// TODO: 处理消息
} else {
// 过时的消息,忽略
}
}
}
}
在发送广播时,需要将消息发送时间一并附带在Intent中:
Intent intent = new Intent();
intent.setAction("com.example.ACTION_MSG_RECEIVED");
intent.putExtra("send_time", System.currentTimeMillis());
intent.putExtra("msg", "Hello, BroadcastReceiver!");
sendBroadcast(intent);
在接收到广播时,首先获取当前时间receiveTime,然后从Intent中取出消息发送时间sendTime,判断sendTime是否在有效时间内(本例中为1分钟),如果是则进行消息处理,否则忽略该消息。