代码如下:
private var lastActionTime : Long = 0
private val intervalTime = 1000L // 间隔时间
private fun isFast() : Boolean{
var isRun = false
val curTime = System.currentTimeMillis()
if ((curTime - lastActionTime) >= intervalTime){
isRun = true
}
lastActionTime = curTime
return isRun
}
比如下面代码,一秒内会接收到多次广播,导致多次执行onReceive()方法
if(isFast()){ }里的代码一秒钟内只会执行一次
internal inner class Receiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
// 捕获GPS和WIFI变化的系统广播
if (intent.action == GPS_ACTION || intent.action == WIFI_ACTION) {
if (isFast()){
Log.d("xuan", "------接收广播:${intent.action}")
// ...
}
}
}
}