触发某个事件后会去调用Android framework的sendPermissionProtectedBroadcast函数,这个函数会发送指定广播出去,有权限的app都会接收这一条广播。
在做压力测试时,由于较长时间(60s)内频繁触发这个事件,然后在这60s内就发送了大量相同的广播,当测试停下来的时候,从日志中还能看到广播还在排队发送。所以怎么去限制这个广播的重复发送呢?
想法:我想的是当发送完一条广播后,如果10s内判断即将发送的广播Action如果和上一条一样,就不发送,这样就大大减少的发广播的次数。这样的话就需要记录上一条广播发送时间,然后在发下一跳广播的时候做计算。
private void sendPermissionProtectedBroadcast(Intent intent) {
if (mEventInstalledPackages.isEmpty()) {
return;
}
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
for (String packageName : mEventInstalledPackages) {
intent.setPackage(packageName);
mContext.sendBroadcast(intent);
}
}