2012-12-15 105 views
0

我想做一個小部件,它的更新頻率可以由用戶定義並在運行時更改。我可以使用鬧鐘管理器做到這一點,但是,有沒有辦法在鬧鐘設置後改變鬧鐘的間隔?Android - widget是否已經在主屏幕上?鬧鐘是否在運行?

如果不是這樣,我仍然可以取消它,並用新的區間再次啓動它,但我不知道這將如何工作,因爲小部件甚至可能沒有被添加到主屏幕,所以問題是,是有辦法要知道報警是否正在運行或更高版本,小工具在主屏幕上?

感謝

//編輯 如何確定你的部件存在

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

回答

1

有沒有辦法改變它的一次設置報警的時間間隔?

對於這一塊,我們可以參考的文檔的AlarmManager.setRepeating()

預約重複報警......如果已經有安排在同IntentSender報警時,它會首先被取消。

換句話說,設置相同類型的報警會取消現有時間間隔,並用新值重置報警。


是有沒有辦法知道,如果警報正在運行或更好的,小部件是主屏幕?

這是AppWidgetProvider的工作。您的提供商中的回調(onEnabled,onUpdate等)可用於確定任何小部件是否實際處於活動狀態(AppWidgetProvider docs)。

+0

+報警,謝謝,這很酷,我想我會有兩個警報運行。 +小工具..我仍然沒有得到如何從活動中確定,在主屏幕上是否有一個小部件,可能會查詢某些內容以獲取在onUpdate中作爲參數獲取的那些ID? – urSus

+0

啓用/禁用回調將會在您添加或刪除所有小部件時得到通知。至於將這些數據提供給應用程序的其他部分,提供程序將需要保持此狀態,以便可以從應用程序中的其他組件查詢它(這不是爲您完成的),可以在內存中或在像SharedPreferences之類的地方持久保存。 – Devunwired

+0

是的,那是計劃B,我想知道是否有更簡單的方法,好的謝謝! – urSus

相關問題