gpt4 book ai didi

android - 如何解决为 AlarmManager 设置唯一 ID 的问题?

转载 作者:太空宇宙 更新时间:2023-11-03 13:35:38 25 4
gpt4 key购买 nike

我正在使用此代码启动警报。

闹钟设置在用户可以启动的 Activity 中。

//Setting alarm to fire off NEW_GAME intent every 24 hours.
String alarm = Context.ALARM_SERVICE;
Calendar calendar = Calendar.getInstance();

calendar.set(Calendar.HOUR_OF_DAY, 8);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND,0);
calendar.set(Calendar.MILLISECOND, 0);

Log.i("Test", "Current time: " + System.currentTimeMillis() );
Log.i("Test", "Calendar time: " + calendar.getTimeInMillis() );

int currentDate = calendar.get(Calendar.DATE);
calendar.set(Calendar.DATE, currentDate+1);

Log.i("Test", "Calendar time with a day added: " + calendar.getTimeInMillis() );


AlarmManager am = (AlarmManager)getActivity().getSystemService(alarm);
Intent intent = new Intent("NEW_ITEM");
PendingIntent sender = PendingIntent.getBroadcast(getActivity(), 0, intent, 0);

am.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis() , AlarmManager.INTERVAL_DAY, sender);

我被告知我需要提供一个唯一的 ID,这样警报就不会在 getBroadcast() 所在的地方互相覆盖。

问题是,当用户可以根据需要多次打开 Activity 时,我该如何做到这一点?

此外,如果我每次都提供一个唯一 ID,这意味着它可能会因为唯一 ID 而设置 5 个相同的警报。

解决这个问题的最佳方法是什么?

最佳答案

您始终可以只使用目标时间的 unix 时间戳作为唯一 ID。这样,准确时间的警报将相互覆盖,而所有其他警报将保持独立

[编辑:] 下面是一些示例代码:

AlarmManager am = (AlarmManager)getActivity().getSystemService(alarm);
Intent intent = new Intent(String.valueOf(calendar.getTimeInMillis()));
PendingIntent sender = PendingIntent.getBroadcast(getActivity(), 0, intent, 0);
am.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis() , AlarmManager.INTERVAL_DAY, sender);

关于android - 如何解决为 AlarmManager 设置唯一 ID 的问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7689271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com