Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d22260da authored by Kun Liang's avatar Kun Liang
Browse files

QuickBoot: remove alarms for killed apps

Device may be woken up by WAKEUP alarms, which have been set
by those killed apps before. Here to get the killed apps list
and remove the alarms from AlarmManagerService.

Change-Id: Ib34f5fc234b834b2fe4528229c267c8693fc76cb
parent 9aafd361
Loading
Loading
Loading
Loading
+28 −1
Original line number Diff line number Diff line
@@ -114,6 +114,7 @@ class AlarmManagerService extends IAlarmManager.Stub {
    private final AlarmHandler mHandler = new AlarmHandler();
    private ClockReceiver mClockReceiver;
    private UninstallReceiver mUninstallReceiver;
    private QuickBootReceiver mQuickBootReceiver;
    private final ResultReceiver mResultReceiver = new ResultReceiver();
    private final PendingIntent mTimeTickSender;
    private final PendingIntent mDateChangeSender;
@@ -497,6 +498,7 @@ class AlarmManagerService extends IAlarmManager.Stub {
        mClockReceiver.scheduleTimeTickEvent();
        mClockReceiver.scheduleDateChangedEvent();
        mUninstallReceiver = new UninstallReceiver();
        mQuickBootReceiver = new QuickBootReceiver();
        
        if (mDescriptor != -1) {
            mWaitThread.start();
@@ -1372,6 +1374,31 @@ class AlarmManagerService extends IAlarmManager.Stub {
        }
    }

    private class QuickBootReceiver extends BroadcastReceiver {

        public QuickBootReceiver() {
            IntentFilter filter = new IntentFilter();
            filter.addAction("intent.quickboot.appkilled");
            mContext.registerReceiver(this, filter,
                    "android.permission.DEVICE_POWER", null);
        }

        @Override
            public void onReceive(Context context, Intent intent) {
                String action = intent.getAction();
                String pkgList[] = null;
                if ("intent.quickboot.appkilled".equals(action)) {
                    pkgList = intent.getStringArrayExtra(Intent.EXTRA_PACKAGES);
                    if (pkgList != null && (pkgList.length > 0)) {
                        for (String pkg : pkgList) {
                            removeLocked(pkg);
                            mBroadcastStats.remove(pkg);
                        }
                    }
                }
            }
    }

    class ClockReceiver extends BroadcastReceiver {
        public ClockReceiver() {
            IntentFilter filter = new IntentFilter();