Merge "Bug fix in Alarm where it was not getting called correctly if the new timeout was set that was smaller than the previously set timeout" into ub-launcher3-calgary
This commit is contained in:
@@ -17,6 +17,7 @@
|
|||||||
package com.android.launcher3;
|
package com.android.launcher3;
|
||||||
|
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
import android.os.SystemClock;
|
||||||
|
|
||||||
public class Alarm implements Runnable{
|
public class Alarm implements Runnable{
|
||||||
// if we reach this time and the alarm hasn't been cancelled, call the listener
|
// if we reach this time and the alarm hasn't been cancelled, call the listener
|
||||||
@@ -41,9 +42,16 @@ public class Alarm implements Runnable{
|
|||||||
// Sets the alarm to go off in a certain number of milliseconds. If the alarm is already set,
|
// Sets the alarm to go off in a certain number of milliseconds. If the alarm is already set,
|
||||||
// it's overwritten and only the new alarm setting is used
|
// it's overwritten and only the new alarm setting is used
|
||||||
public void setAlarm(long millisecondsInFuture) {
|
public void setAlarm(long millisecondsInFuture) {
|
||||||
long currentTime = System.currentTimeMillis();
|
long currentTime = SystemClock.uptimeMillis();
|
||||||
mAlarmPending = true;
|
mAlarmPending = true;
|
||||||
|
long oldTriggerTime = mAlarmTriggerTime;
|
||||||
mAlarmTriggerTime = currentTime + millisecondsInFuture;
|
mAlarmTriggerTime = currentTime + millisecondsInFuture;
|
||||||
|
|
||||||
|
// If the previous alarm was set for a longer duration, cancel it.
|
||||||
|
if (mWaitingForCallback && oldTriggerTime > mAlarmTriggerTime) {
|
||||||
|
mHandler.removeCallbacks(this);
|
||||||
|
mWaitingForCallback = false;
|
||||||
|
}
|
||||||
if (!mWaitingForCallback) {
|
if (!mWaitingForCallback) {
|
||||||
mHandler.postDelayed(this, mAlarmTriggerTime - currentTime);
|
mHandler.postDelayed(this, mAlarmTriggerTime - currentTime);
|
||||||
mWaitingForCallback = true;
|
mWaitingForCallback = true;
|
||||||
@@ -51,15 +59,14 @@ public class Alarm implements Runnable{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void cancelAlarm() {
|
public void cancelAlarm() {
|
||||||
mAlarmTriggerTime = 0;
|
|
||||||
mAlarmPending = false;
|
mAlarmPending = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// this is called when our timer runs out
|
// this is called when our timer runs out
|
||||||
public void run() {
|
public void run() {
|
||||||
mWaitingForCallback = false;
|
mWaitingForCallback = false;
|
||||||
if (mAlarmTriggerTime != 0) {
|
if (mAlarmPending) {
|
||||||
long currentTime = System.currentTimeMillis();
|
long currentTime = SystemClock.uptimeMillis();
|
||||||
if (mAlarmTriggerTime > currentTime) {
|
if (mAlarmTriggerTime > currentTime) {
|
||||||
// We still need to wait some time to trigger spring loaded mode--
|
// We still need to wait some time to trigger spring loaded mode--
|
||||||
// post a new callback
|
// post a new callback
|
||||||
|
|||||||
@@ -25,6 +25,15 @@ public class Wait {
|
|||||||
}
|
}
|
||||||
SystemClock.sleep(sleepMillis);
|
SystemClock.sleep(sleepMillis);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check once more before returning false.
|
||||||
|
try {
|
||||||
|
if (condition.isTrue()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} catch (Throwable t) {
|
||||||
|
// Ignore
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user