我想向用户显示一条通知,其中包含我从服务器提取的一些信息。 通知是粘性的,仅在连接到Wi-Fi时显示。 需要使用用户的新信息每隔X分钟更新一次通知。
为此,我创建了一个BroadcastReceiver
,可以收听android.intent.action.BOOT_COMPLETED
,android.net.wifi.WIFI_STATE_CHANGED
和android.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
功能。但这似乎不是正确的方法。当服务死亡时,我希望隐藏通知。
我做错了什么?