Loading services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java +21 −7 Original line number Original line Diff line number Diff line Loading @@ -330,6 +330,8 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku // Handler to the background thread that saves states to disk. // Handler to the background thread that saves states to disk. private Handler mSaveStateHandler; private Handler mSaveStateHandler; private Handler mAlarmHandler; // Handler to the background thread that saves generated previews to disk. All operations that // Handler to the background thread that saves generated previews to disk. All operations that // modify saved previews must be run on this Handler. // modify saved previews must be run on this Handler. private Handler mSavePreviewsHandler; private Handler mSavePreviewsHandler; Loading Loading @@ -373,6 +375,7 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku if (removeAppWidgetServiceIoFromCriticalPath()) { if (removeAppWidgetServiceIoFromCriticalPath()) { mSaveStateHandler = new Handler(BackgroundThread.get().getLooper(), mSaveStateHandler = new Handler(BackgroundThread.get().getLooper(), this::handleSaveMessage); this::handleSaveMessage); mAlarmHandler = new Handler(BackgroundThread.get().getLooper()); } else { } else { mSaveStateHandler = BackgroundThread.getHandler(); mSaveStateHandler = BackgroundThread.getHandler(); } } Loading Loading @@ -2739,10 +2742,15 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku } } if (provider.broadcast != null) { if (provider.broadcast != null) { final PendingIntent broadcast = provider.broadcast; final PendingIntent broadcast = provider.broadcast; mSaveStateHandler.post(() -> { Runnable cancelRunnable = () -> { mAlarmManager.cancel(broadcast); mAlarmManager.cancel(broadcast); broadcast.cancel(); broadcast.cancel(); }); }; if (removeAppWidgetServiceIoFromCriticalPath()) { mAlarmHandler.post(cancelRunnable); } else { mSaveStateHandler.post(cancelRunnable); } provider.broadcast = null; provider.broadcast = null; } } } } Loading Loading @@ -3422,10 +3430,16 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku // invariant and established the PendingIntent safely. // invariant and established the PendingIntent safely. final long period = Math.max(info.updatePeriodMillis, MIN_UPDATE_PERIOD); final long period = Math.max(info.updatePeriodMillis, MIN_UPDATE_PERIOD); final PendingIntent broadcast = provider.broadcast; final PendingIntent broadcast = provider.broadcast; mSaveStateHandler.post(() -> Runnable repeatRunnable = () -> { mAlarmManager.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, mAlarmManager.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + period, period, broadcast) SystemClock.elapsedRealtime() + period, period, broadcast); ); }; if (removeAppWidgetServiceIoFromCriticalPath()) { mAlarmHandler.post(repeatRunnable); } else { mSaveStateHandler.post(repeatRunnable); } } } } } } } Loading Loading
services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java +21 −7 Original line number Original line Diff line number Diff line Loading @@ -330,6 +330,8 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku // Handler to the background thread that saves states to disk. // Handler to the background thread that saves states to disk. private Handler mSaveStateHandler; private Handler mSaveStateHandler; private Handler mAlarmHandler; // Handler to the background thread that saves generated previews to disk. All operations that // Handler to the background thread that saves generated previews to disk. All operations that // modify saved previews must be run on this Handler. // modify saved previews must be run on this Handler. private Handler mSavePreviewsHandler; private Handler mSavePreviewsHandler; Loading Loading @@ -373,6 +375,7 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku if (removeAppWidgetServiceIoFromCriticalPath()) { if (removeAppWidgetServiceIoFromCriticalPath()) { mSaveStateHandler = new Handler(BackgroundThread.get().getLooper(), mSaveStateHandler = new Handler(BackgroundThread.get().getLooper(), this::handleSaveMessage); this::handleSaveMessage); mAlarmHandler = new Handler(BackgroundThread.get().getLooper()); } else { } else { mSaveStateHandler = BackgroundThread.getHandler(); mSaveStateHandler = BackgroundThread.getHandler(); } } Loading Loading @@ -2739,10 +2742,15 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku } } if (provider.broadcast != null) { if (provider.broadcast != null) { final PendingIntent broadcast = provider.broadcast; final PendingIntent broadcast = provider.broadcast; mSaveStateHandler.post(() -> { Runnable cancelRunnable = () -> { mAlarmManager.cancel(broadcast); mAlarmManager.cancel(broadcast); broadcast.cancel(); broadcast.cancel(); }); }; if (removeAppWidgetServiceIoFromCriticalPath()) { mAlarmHandler.post(cancelRunnable); } else { mSaveStateHandler.post(cancelRunnable); } provider.broadcast = null; provider.broadcast = null; } } } } Loading Loading @@ -3422,10 +3430,16 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku // invariant and established the PendingIntent safely. // invariant and established the PendingIntent safely. final long period = Math.max(info.updatePeriodMillis, MIN_UPDATE_PERIOD); final long period = Math.max(info.updatePeriodMillis, MIN_UPDATE_PERIOD); final PendingIntent broadcast = provider.broadcast; final PendingIntent broadcast = provider.broadcast; mSaveStateHandler.post(() -> Runnable repeatRunnable = () -> { mAlarmManager.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, mAlarmManager.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + period, period, broadcast) SystemClock.elapsedRealtime() + period, period, broadcast); ); }; if (removeAppWidgetServiceIoFromCriticalPath()) { mAlarmHandler.post(repeatRunnable); } else { mSaveStateHandler.post(repeatRunnable); } } } } } } } Loading