Don't send callback with null topActivity

The topActivity defined in ActivityListener#onTopActivityChanged is @NonNull, so GenericWindowPolicyController should not send the callback when topActivity is null.

Bug: 222771130
Test: manual testing
Change-Id: I227d1d83e0e191975ab45b110909938022bb1d0c
This commit is contained in:
yuanjiahsu
2022-03-09 12:07:50 +08:00
committed by Yuanjia Hsu
parent 95387ac862
commit ab63d0671c
2 changed files with 8 additions and 1 deletions

View File

@@ -469,6 +469,10 @@ public final class VirtualDeviceManager {
/**
* Called when the top activity is changed.
*
* <p>Note: When there are no activities running on the virtual display, the
* {@link #onDisplayEmpty(int)} will be called. If the value topActivity is cached, it
* should be cleared when {@link #onDisplayEmpty(int)} is called.
*
* @param displayId The display ID on which the activity change happened.
* @param topActivity The component name of the top activity.
*/

View File

@@ -165,7 +165,10 @@ public class GenericWindowPolicyController extends DisplayWindowPolicyController
@Override
public void onTopActivityChanged(ComponentName topActivity, int uid) {
if (mActivityListener != null) {
// Don't send onTopActivityChanged() callback when topActivity is null because it's defined
// as @NonNull in ActivityListener interface. Sends onDisplayEmpty() callback instead when
// there is no activity running on virtual display.
if (mActivityListener != null && topActivity != null) {
// Post callback on the main thread so it doesn't block activity launching
mHandler.post(() ->
mActivityListener.onTopActivityChanged(Display.INVALID_DISPLAY, topActivity));