Android 哪个值的优先级更高,updatePeriodMillis还是与报警关联的值?

Android 哪个值的优先级更高,updatePeriodMillis还是与报警关联的值?,android,android-widget,anti-patterns,Android,Android Widget,Anti Patterns,据我所知,参数updatePeriodMillis确定了根据/res/xml中的widgetproviderinfo.xml中的规范更新应用程序小部件的频率 <?xml version="1.0" encoding="utf-8"?> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:configure="com.example.appwidget

据我所知,参数
updatePeriodMillis
确定了根据/res/xml中的
widgetproviderinfo.xml
中的规范更新应用程序
小部件的频率

<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:configure="com.example.appwidget.ConfigurationActivity"
    android:initialLayout="@layout/layout_appwidget_large"
    android:minHeight="115dp"
    android:minWidth="250dp"
    android:updatePeriodMillis="1800000" ><!-- 30mins -->
</appwidget-provider>
因此,我的问题如下: 假设AlarmManager用于执行更新。此外,如果在widgetproviderinfo.xml中,updatePeriodMillis未设置为0,则 哪个值优先?指定为来自android DOC的报警或updatePeriodMillis?

的一部分的值: 注意:使用updatePeriodMillis请求的更新不会每30分钟发送一次以上。 [在此处输入链接说明][1]


因此,基本上,如果您将UpdatePeriodMills设置为小于1800000,android将在30分钟后才会调用您的onUpdate方法,这两个方法都将触发一个
onUpdate()
调用

如果您将警报设置为20分钟,将
updatePeriodMillis
设置为30分钟


然后将
小部件
放在主屏幕上。20分钟后,警报将触发要调用的
onUpdate
(实际上可以是您选择的任何其他函数)。然后10分钟后(小部件放在屏幕上后总共30分钟),
updatePeriodMillis
将触发一个
onUpdate()
。10分钟后(小部件出现在屏幕上40分钟后),警报将触发另一个
onUpdate()
。最后20分钟后(小部件出现在屏幕上60分钟后)
updatePeriodMillis
将触发另一个
onUpdate()

您的解释不清楚。您的意思是说,如果UpDeDeValm MLLIS存在并且配置为小于1800000,Android将考虑1800000作为默认值(如果没有配置警报,这将是正确的)如果UpDeDeValeMLLIS < 1800000和配置了警报,那么哪个优先?这是否取决于哪个值更大?此外,更重要的是,当updatePeriodMillis配置为大于1800000的值且同时配置了报警时,预期的行为是什么?你能把所有的案子都处理一下吗?
final Intent intent = new Intent(context, UpdateService.class);
final PendingIntent pending = PendingIntent.getService(context, 0, intent, 0);
final AlarmManager alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarm.cancel(pending);
long interval = 1000*60;
alarm.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime(),interval, pending);