summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWilhelm Fitzpatrick <rafial@cyngn.com>2016-02-12 13:19:03 -0800
committerWilhelm Fitzpatrick <rafial@cyngn.com>2016-02-12 13:47:30 -0800
commit7953643b9d66917eea66494516801d9594862cc1 (patch)
tree8d9f824eaa0901af5502d60f2a8c244f3cbec47a
parent3538cd35f79014b3fd10ee9da11965c44cd38c90 (diff)
downloadandroid_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.java9
-rw-r--r--src/com/android/deskclock/provider/AlarmInstance.java2
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();