0

所以我设法在android中创建了一个本地通知。下面给出部分代码。

AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),alarmManager.INTERVAL_DAY,pendingIntent);

现在创建通知没有问题。问题是我目前正在通过按下按钮来测试它,该按钮开始整个通知的事情,通知每天同时出现。但是,我仍然不想添加一个按钮供用户按下,所以我必须删除该按钮,并在每次用户启动应用程序时(在 Main 类的 onCreate 上)运行这个警报启动代码,以确保通知已激活。然而,对我来说,一遍又一遍地设置相同的警报似乎并不合适,因为一次就足够了。连续这样做是否真的会导致任何问题?或者有什么方法可以获得当前激活的 ALARM SERVICE ?(如何?)。我正在考虑使用共享首选项进行一次激活,但服务可能会在此期间停止,然后不再通知。在这种情况下你有什么建议?我看过其他一些几乎相同问题的帖子,但它与我的无关。

4

1 回答 1

1

“有没有办法获得当前激活的警报服务?(如何?)”长话短说,不,你不能直接从Android(你可以在调试时用shell来做,或者如果你已经植根你的设备,在这种情况下,是的)。

但是,好消息:警报完全由其未决意图定义,因此,相同的未决意图,相同的警报。您可以做的是在每次使用相同的 EXACT 待处理意图打开主要活动时调用您的警报。在这一点上,您有 2 种选择 pendin 意图的标志:您可以使用 PendingIntent.FLAG_CANCEL_CURRENT 或 PendingIntent.FLAG_UPDATE_CURRENT。

第一个将与警报一起吃午饭,如果已经注册了一个相应的待处理互联网,则将什么也不做(取消留下当前请求的请求)

第二个将与警报一起吃午饭,如果已经注册了一个相应的待处理意图,则将更新当前警报,并且每次打开应用程序时都不会添加大量警报。

就个人而言,第二个一直为我完成他的工作

(见https://developer.android.com/reference/android/app/PendingIntent.html

于 2018-01-14T17:57:05.637 回答