我使用Android創建時鐘窗口小部件。我測試過時鐘和邏輯似乎很好,但我需要每分鐘更新一次。通過Widget AppWidgetProvider使用TimerTask和Timer
我在我的XML中將updatePeriodMillis設置爲60000,但Android限制爲30分鐘,因此它每半小時更新一次。
我做了一些研究,服務或AlarmManager可能已經工作,但我調用的方法需要通過onUpdate()方法傳遞給它的AppWidgetManager和AppWidgetId。
我已經試過兩(類似)的方法來獲取分鐘更新工作:
static void updateAppWidget(final Context context, final AppWidgetManager appWidgetManager,
final int appWidgetId) {
final Handler mHandler = new Handler();
TimerTask minuteTask = new TimerTask() {
@Override
public void run() {
mHandler.post(new Runnable() {
@Override
public void run() {
//Do Stuff
});
}
};
timer = new Timer();
// schedule the task to run starting now and then every minute
timer.scheduleAtFixedRate(minuteTask, 0l, 1000 * 60);
}
和:
static void updateAppWidget(final Context context, final AppWidgetManager appWidgetManager,
final int appWidgetId) {
TimerTask minuteTask = new TimerTask() {
@Override
public void run() {
//Do stuff
}
};
timer = new Timer();
// schedule the task to run starting now and then every minute
timer.scheduleAtFixedRate(minuteTask, 0l, 1000 * 60);
}
任何幫助是非常讚賞。
謝謝。
編輯:在我花時間調試和發佈這篇文章的時候,我結束了應用程序的安裝半個小時。當onUpdate()被首次調用時,它會在半小時後啓動,但在最初的30分鐘內仍然不起作用。
感謝您的提示。我現在已經創建了一個方法,將所有的應用部件ID添加到共享首選項,並且在我的onEnabled方法中設置了重複警報。 然後我有一個Intent服務從共享首選項中獲取ID,然後AppWidgetManager與getInstance()然後調用updateAppWidget(this,appWidgetManager,id),但應用程序仍然沒有更新。 我想這可能是因爲我的服務沒有正確啓動。有沒有辦法測試我的服務是否正在運行? – thebillington