Loading core/api/test-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -2411,6 +2411,7 @@ package android.service.dreams { public abstract class DreamOverlayService extends android.app.Service { ctor public DreamOverlayService(); method @Nullable public final android.os.IBinder onBind(@NonNull android.content.Intent); method public void onEndDream(); method public abstract void onStartDream(@NonNull android.view.WindowManager.LayoutParams); method public final void requestExit(); method public final boolean shouldShowComplications(); Loading core/java/android/service/dreams/DreamOverlayService.java +15 −1 Original line number Diff line number Diff line Loading @@ -50,6 +50,11 @@ public abstract class DreamOverlayService extends Service { onStartDream(layoutParams); } @Override public void endDream() { onEndDream(); } @Override public void wakeUp() { onWakeUp(() -> { Loading Loading @@ -83,13 +88,22 @@ public abstract class DreamOverlayService extends Service { /** * This method is overridden by implementations to handle when the dream has been requested * to wakeup. This allows any overlay animations to run. * to wakeup. This allows any overlay animations to run. By default, the method will invoke * the callback immediately. * * @param onCompleteCallback The callback to trigger to notify the dream service that the * overlay has completed waking up. * @hide */ public void onWakeUp(@NonNull Runnable onCompleteCallback) { onCompleteCallback.run(); } /** * This method is overridden by implementations to handle when the dream has ended. There may * be earlier signals leading up to this step, such as @{@link #onWakeUp(Runnable)}. */ public void onEndDream() { } /** Loading core/java/android/service/dreams/DreamService.java +22 −8 Original line number Diff line number Diff line Loading @@ -297,14 +297,20 @@ public class DreamService extends Service implements Window.Callback { } public void addConsumer(Consumer<IDreamOverlay> consumer) { execute(() -> { mConsumers.add(consumer); if (mOverlay != null) { consumer.accept(mOverlay); } }); } public void removeConsumer(Consumer<IDreamOverlay> consumer) { mConsumers.remove(consumer); execute(() -> mConsumers.remove(consumer)); } public void clearConsumers() { execute(() -> mConsumers.clear()); } } Loading Loading @@ -1383,6 +1389,17 @@ public class DreamService extends Service implements Window.Callback { @Override public void onViewDetachedFromWindow(View v) { if (mOverlayConnection != null) { mOverlayConnection.addConsumer(overlay -> { try { overlay.endDream(); } catch (RemoteException e) { Log.e(mTag, "could not inform overlay of dream end:" + e); } }); mOverlayConnection.clearConsumers(); } if (mActivity == null || !mActivity.isChangingConfigurations()) { // Only stop the dream if the view is not detached by relaunching // activity for configuration changes. It is important to also clear Loading @@ -1391,9 +1408,6 @@ public class DreamService extends Service implements Window.Callback { mActivity = null; finish(); } if (mOverlayConnection != null && mDreamStartOverlayConsumer != null) { mOverlayConnection.removeConsumer(mDreamStartOverlayConsumer); } } }); } Loading core/java/android/service/dreams/IDreamOverlay.aidl +3 −0 Original line number Diff line number Diff line Loading @@ -41,4 +41,7 @@ interface IDreamOverlay { /** Called when the dream is waking, to do any exit animations */ void wakeUp(); /** Called when the dream has ended. */ void endDream(); } core/java/com/android/internal/util/ObservableServiceConnection.java +7 −0 Original line number Diff line number Diff line Loading @@ -164,6 +164,13 @@ public class ObservableServiceConnection<T> implements ServiceConnection { mFlags = flags; } /** * Executes code on the executor specified at construction. */ public void execute(Runnable runnable) { mExecutor.execute(runnable); } /** * Initiate binding to the service. * Loading Loading
core/api/test-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -2411,6 +2411,7 @@ package android.service.dreams { public abstract class DreamOverlayService extends android.app.Service { ctor public DreamOverlayService(); method @Nullable public final android.os.IBinder onBind(@NonNull android.content.Intent); method public void onEndDream(); method public abstract void onStartDream(@NonNull android.view.WindowManager.LayoutParams); method public final void requestExit(); method public final boolean shouldShowComplications(); Loading
core/java/android/service/dreams/DreamOverlayService.java +15 −1 Original line number Diff line number Diff line Loading @@ -50,6 +50,11 @@ public abstract class DreamOverlayService extends Service { onStartDream(layoutParams); } @Override public void endDream() { onEndDream(); } @Override public void wakeUp() { onWakeUp(() -> { Loading Loading @@ -83,13 +88,22 @@ public abstract class DreamOverlayService extends Service { /** * This method is overridden by implementations to handle when the dream has been requested * to wakeup. This allows any overlay animations to run. * to wakeup. This allows any overlay animations to run. By default, the method will invoke * the callback immediately. * * @param onCompleteCallback The callback to trigger to notify the dream service that the * overlay has completed waking up. * @hide */ public void onWakeUp(@NonNull Runnable onCompleteCallback) { onCompleteCallback.run(); } /** * This method is overridden by implementations to handle when the dream has ended. There may * be earlier signals leading up to this step, such as @{@link #onWakeUp(Runnable)}. */ public void onEndDream() { } /** Loading
core/java/android/service/dreams/DreamService.java +22 −8 Original line number Diff line number Diff line Loading @@ -297,14 +297,20 @@ public class DreamService extends Service implements Window.Callback { } public void addConsumer(Consumer<IDreamOverlay> consumer) { execute(() -> { mConsumers.add(consumer); if (mOverlay != null) { consumer.accept(mOverlay); } }); } public void removeConsumer(Consumer<IDreamOverlay> consumer) { mConsumers.remove(consumer); execute(() -> mConsumers.remove(consumer)); } public void clearConsumers() { execute(() -> mConsumers.clear()); } } Loading Loading @@ -1383,6 +1389,17 @@ public class DreamService extends Service implements Window.Callback { @Override public void onViewDetachedFromWindow(View v) { if (mOverlayConnection != null) { mOverlayConnection.addConsumer(overlay -> { try { overlay.endDream(); } catch (RemoteException e) { Log.e(mTag, "could not inform overlay of dream end:" + e); } }); mOverlayConnection.clearConsumers(); } if (mActivity == null || !mActivity.isChangingConfigurations()) { // Only stop the dream if the view is not detached by relaunching // activity for configuration changes. It is important to also clear Loading @@ -1391,9 +1408,6 @@ public class DreamService extends Service implements Window.Callback { mActivity = null; finish(); } if (mOverlayConnection != null && mDreamStartOverlayConsumer != null) { mOverlayConnection.removeConsumer(mDreamStartOverlayConsumer); } } }); } Loading
core/java/android/service/dreams/IDreamOverlay.aidl +3 −0 Original line number Diff line number Diff line Loading @@ -41,4 +41,7 @@ interface IDreamOverlay { /** Called when the dream is waking, to do any exit animations */ void wakeUp(); /** Called when the dream has ended. */ void endDream(); }
core/java/com/android/internal/util/ObservableServiceConnection.java +7 −0 Original line number Diff line number Diff line Loading @@ -164,6 +164,13 @@ public class ObservableServiceConnection<T> implements ServiceConnection { mFlags = flags; } /** * Executes code on the executor specified at construction. */ public void execute(Runnable runnable) { mExecutor.execute(runnable); } /** * Initiate binding to the service. * Loading