我正在尝试创建一个小部件,其更新频率可由用户定义并在运行时更改。我可以使用报警管理器来做到这一点,但是,有没有办法在设置后更改闹钟的间隔?
如果没有,我仍然可以取消它并以新的间隔再次启动它,但我不知道这将如何工作,因为小部件可能甚至没有添加到主屏幕,所以问题是,是否有办法要知道警报是否正在运行或更好,小部件是否在主屏幕上?
由于
//编辑 如何确定您的小部件是否存在
private boolean widgetExists() {
ComponentName myWidget = new ComponentName(this, MyWidgetProvider.class);
int[] ids = AppWidgetManager.getInstance(this).getAppWidgetIds(myWidget);
return ids.length > 0;
}
答案 0 :(得分:1)
有没有办法在设置后更改闹钟的间隔?
对于本文,我们可以参考AlarmManager.setRepeating()
的文档:
安排重复警报......如果已经为同一个IntentSender安排了警报,它将首先被取消。
换句话说,设置相同类型的警报会取消现有间隔,并使用新值重置警报。
有没有办法知道警报是否正在运行或更好,小部件是否在主屏幕上?
这是AppWidgetProvider
的工作。您的提供程序中的回调(onEnabled
,onUpdate
等)可用于确定任何窗口小部件是否实际处于活动状态(AppWidgetProvider docs)。