我为我的小部件创建了一个配置活动,用户可以从中选择各种更新频率。到目前为止,我在OnEnabled()方法中启动了警报,如下所示:
Intent intent = new Intent(CLOCK_WIDGET_UPDATE);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC, System.currentTimeMillis(), 1000 * 60,
pendingIntent);
设置保存在具有唯一名称(widgetId)的共享首选项中,并且在此OnEnabled()方法中,我无法在此处检索设置,因为我还无法获取widgetId。 还有另一个问题,用户可以随时更改频率,但这种方法在开始时只调用一次。所以我想我需要在OnUpdate()中启动警报,但我不知道该怎么做,我不想意外地发出多个警报实例,所以我想请一些建议。
答案 0 :(得分:1)
要回答第二个问题,多次调用setRepeating将不会创建多个警报,只要您提供相同的PendingIntent和相同的请求代码以及PendingIntent.FLAG_UPDATE_CURRENT标志。我还建议使用setInexactRepeating而不是setRepeating。因此,您也可以使用新频率在OnUpdate()中使用相同的代码。浏览FLAG_UPDATE_CURRENT的文档和setInexactRepeating以获取更多详细信息。