Android - 小部件已经在主屏幕上了吗?报警器在运行吗?

时间:2012-12-15 23:28:20

标签: android widget alarmmanager

我正在尝试创建一个小部件,其更新频率可由用户定义并在运行时更改。我可以使用报警管理器来做到这一点,但是,有没有办法在设置后更改闹钟的间隔?

如果没有,我仍然可以取消它并以新的间隔再次启动它,但我不知道这将如何工作,因为小部件可能甚至没有添加到主屏幕,所以问题是,是否有办法要知道警报是否正在运行或更好,小部件是否在主屏幕上?

由于

//编辑 如何确定您的小部件是否存在

private boolean widgetExists() {
    ComponentName myWidget = new ComponentName(this, MyWidgetProvider.class);
    int[] ids = AppWidgetManager.getInstance(this).getAppWidgetIds(myWidget);
    return ids.length > 0;
}

1 个答案:

答案 0 :(得分:1)

  

有没有办法在设置后更改闹钟的间隔?

对于本文,我们可以参考AlarmManager.setRepeating()的文档:

  

安排重复警报......如果已经为同一个IntentSender安排了警报,它将首先被取消。

换句话说,设置相同类型的警报会取消现有间隔,并使用新值重置警报。


  

有没有办法知道警报是否正在运行或更好,小部件是否在主屏幕上?

这是AppWidgetProvider的工作。您的提供程序中的回调(onEnabledonUpdate等)可用于确定任何窗口小部件是否实际处于活动状态(AppWidgetProvider docs)。