diff options
author | Wilhelm Fitzpatrick <rafial@cyngn.com> | 2016-02-12 13:19:03 -0800 |
---|---|---|
committer | Wilhelm Fitzpatrick <rafial@cyngn.com> | 2016-02-12 13:47:30 -0800 |
commit | 7953643b9d66917eea66494516801d9594862cc1 (patch) | |
tree | 8d9f824eaa0901af5502d60f2a8c244f3cbec47a | |
parent | 3538cd35f79014b3fd10ee9da11965c44cd38c90 (diff) | |
download | android_packages_apps_DeskClock-7953643b9d66917eea66494516801d9594862cc1.tar.gz android_packages_apps_DeskClock-7953643b9d66917eea66494516801d9594862cc1.tar.bz2 android_packages_apps_DeskClock-7953643b9d66917eea66494516801d9594862cc1.zip |
DeskClock: fix crash during POWER_OFF_ALARM start up
When starting up as a resul of a POWER_OFF_ALARM, there is code in
the app to check if we just missed the alarm we are starting up for.
Since we start up two minutes early, this is usually not the case,
but there was a codepath while finishing the AlarmActivity that
assumed that mAlarmInstance wasn't null, so added a null check.
Also added some comments and renamed a method to make the purpose
of this startup path clearer to future generations.
CYNGNOS-1977
Change-Id: Icc67b71620b2859e596a46a04aff1e773637c694
(cherry picked from commit b3e564ae1a7673d75802c0451b7c4e7aeb6763d8)
-rw-r--r-- | src/com/android/deskclock/alarms/AlarmActivity.java | 9 | ||||
-rw-r--r-- | src/com/android/deskclock/provider/AlarmInstance.java | 2 |
2 files changed, 5 insertions, 6 deletions
diff --git a/src/com/android/deskclock/alarms/AlarmActivity.java b/src/com/android/deskclock/alarms/AlarmActivity.java index f31381db8..50922d601 100644 --- a/src/com/android/deskclock/alarms/AlarmActivity.java +++ b/src/com/android/deskclock/alarms/AlarmActivity.java @@ -41,7 +41,6 @@ import android.os.Bundle; import android.os.Handler; import android.os.IBinder; import android.os.Message; -import android.os.RemoteException; import android.preference.PreferenceManager; import android.provider.Settings; import android.support.annotation.NonNull; @@ -203,10 +202,10 @@ public class AlarmActivity extends AppCompatActivity mContext = getApplicationContext(); if (mIsPowerOffAlarm) { - mAlarmInstance = AlarmInstance.getFirstAlarmInstance(mContext.getContentResolver()); - + // if we are invoked by a power off alarm, we may have just missed the alarm + // time if the boot took unusually long (we normally wake up two minutes early) + mAlarmInstance = AlarmInstance.getFirstMissedInstance(mContext.getContentResolver()); Settings.System.putInt(mContext.getContentResolver(), POWER_OFF_ALARM_MODE, 1); - } else if (intentData != null) { long instanceId = AlarmInstance.getId(intentData); mAlarmInstance = AlarmInstance.getInstance(this.getContentResolver(), instanceId); @@ -376,7 +375,7 @@ public class AlarmActivity extends AppCompatActivity @Override protected void onDestroy() { super.onDestroy(); - if (mIsPowerOffAlarm) { + if (mIsPowerOffAlarm && mAlarmInstance != null) { // Boot alarm should not be destroyed before being handled. if (!mIsPowerOffing) { if (!mAlarmHandled) { diff --git a/src/com/android/deskclock/provider/AlarmInstance.java b/src/com/android/deskclock/provider/AlarmInstance.java index 2d2d666fc..48f79cb28 100644 --- a/src/com/android/deskclock/provider/AlarmInstance.java +++ b/src/com/android/deskclock/provider/AlarmInstance.java @@ -308,7 +308,7 @@ public final class AlarmInstance implements ClockContract.InstancesColumns { * * @param contentResolver to access the content provider */ - public static AlarmInstance getFirstAlarmInstance(ContentResolver contentResolver) { + public static AlarmInstance getFirstMissedInstance(ContentResolver contentResolver) { List<AlarmInstance> alertAlarms = getInstances(contentResolver, null); long currentTime = System.currentTimeMillis(); |