在我的活动中,我有一个 private BroadcastReceiver
,当触发时,应该在几毫秒后更新 UI。在我的活动中,我有:
private BroadcastReceiver broadCastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.e("BroadCastReciever: ", "UpdateCaseList");
update.RefreshCaseList();
}
};
这BroadcastReceiver
是从以下位置触发的Service
:
@Override
public void onCreate() {
super.onCreate();
intent = new Intent(BROADCAST_ACTION);
}
@Override
public void onStart(Intent intent, int startId) {
handler.removeCallbacks(sendUpdatesToUI);
handler.postDelayed(sendUpdatesToUI, 0);
}
private Runnable sendUpdatesToUI = new Runnable() {
public void run() {
handler.postDelayed(this, 10000); // 10 seconds
sendUpdateToUiThread();
}
};
private void sendUpdateToUiThread() {
sendBroadcast(intent);
}
我想当onStart
我在我的方法中注册 BroadcastReceiver 时正在调用该OnResume()
方法。我也注销了BroadcastReceiver
in onPause
。
我的意图是这应该Activity
每 10 秒向 发送一个通知。一旦我启动应用程序,我的服务将按计划每 10 秒通知一次 Activity。问题是当我离开活动并返回时,它不会activity
每 10 秒发布一次通知,而是随机发布一次通知。我可以看到LogCat
这种随机性垃圾邮件每 4、6、3、8、6 秒等发生一次。为什么会有这种行为?