Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – 哪个值的优先级更高,updatePeriodMillis或与Alarm相关的值?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我知道参数updatePeriodMillis根据/ res / xml中存在的widgetproviderinfo.xml中的规范确定应用程序窗口小部件的更新频率

<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://scheR_872_11845@as.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使用appwidgetprovider接收的Intent设置警报.将警报类型设置为
ELAPSED_REALTIME或RTC,仅在设备唤醒时发出警报.然后将updatePeriodMillis设置为零(“0”).至
代码看起来像这样

final Intent intent = new Intent(context,updateservice.class);
final PendingIntent pending = PendingIntent.getservice(context,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);

所以我的问题如下:
假设AlarmManager用于执行更新.此外,如果在widgetproviderinfo.xml中,updatePeriodMillis未设置为0,则
哪个值优先?作为Alarm或updatePeriodMillis的一部分指定的值?

解决方法

它们都会触发onupdate()调用.

如果您将闹钟设置为20分钟,并将updatePeriodMillis设置为30分钟.

然后你将你的小部件放在主屏幕上. 20分钟后,警报将触发onupdate被调用(可以是您实际选择的任何其他功能).然后10分钟后(总共自从小部件放置在屏幕上30分钟),updatePeriodMillis将触发onupdate().然后10分钟后(自小部件放置在屏幕上40分钟后),闹钟将触发另一个onupdate().最后20分钟后(自小部件放置在屏幕上60分钟后)updatePeriodMillis将触发另一个onupdate().

大佬总结

以上是大佬教程为你收集整理的android – 哪个值的优先级更高,updatePeriodMillis或与Alarm相关的值?全部内容,希望文章能够帮你解决android – 哪个值的优先级更高,updatePeriodMillis或与Alarm相关的值?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。