连接到WiFi后启动的Android重复闹钟

时间:2017-03-03 09:31:36

标签: android notifications broadcastreceiver intentservice

我想向用户显示一条通知,其中包含我从服务器提取的一些信息。 通知是粘性的,仅在连接到Wi-Fi时显示。 需要使用用户的新信息每隔X分钟更新一次通知。

为此,我创建了一个BroadcastReceiver,可以收听android.intent.action.BOOT_COMPLETEDandroid.net.wifi.WIFI_STATE_CHANGEDandroid.net.wifi.STATE_CHANGE。 因此,当手机启动时,我的接收器onReceive将被呼叫。 接收者检查: 如果连接了Wi-Fi:它会启动警报(使用alarmManager.setInexactRepeating)。 警报会为IntentService创建一个意图,并在其onHandleIntent中更新通知内容。 如果未连接Wi-Fi:它会使用以下命令停止闹钟:

Intent intent = new Intent(context, InfoNotificationService.class);
AlarmManager alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarm.cancel(pIntent);

为了隐藏通知,当取消闹钟时,我会覆盖隐藏通知的InfoNotificationService onDestroy

在实践中会发生的情况是,通知会一次又一次地显示(即使Wi-Fi未更改) - 其onDestory然后其onHandleIntent在无限循环中被调用。< / p>

取消闹钟后(在接收器中)立即调用hideNotification功能。但这似乎不是正确的方法。当服务死亡时,我希望隐藏通知。 我做错了什么?

0 个答案:

没有答案