From 3dc15e1f2e5ce0acc662c65613475ee386341a24 Mon Sep 17 00:00:00 2001 From: qii Date: Tue, 25 Feb 2020 17:54:25 +0800 Subject: [PATCH] refactor: only visible Scene can intercept app back event --- .../java/com/bytedance/scene/navigation/NavigationScene.java | 3 --- .../bytedance/scene/navigation/NavigationSceneManager.java | 4 +++- .../com/bytedance/scene/ui/template/NavigationViewScene.java | 3 --- 3 files changed, 3 insertions(+), 7 deletions(-) diff --git a/library/scene/src/main/java/com/bytedance/scene/navigation/NavigationScene.java b/library/scene/src/main/java/com/bytedance/scene/navigation/NavigationScene.java index b822bf60..cbbd3a43 100644 --- a/library/scene/src/main/java/com/bytedance/scene/navigation/NavigationScene.java +++ b/library/scene/src/main/java/com/bytedance/scene/navigation/NavigationScene.java @@ -553,9 +553,6 @@ public void onActivityCreated(@Nullable Bundle savedInstanceState) { parentSceneNavigation.addOnBackPressedListener(this, new OnBackPressedListener() { @Override public boolean onBackPressed() { - if (getState().value < State.STARTED.value) { - return false; - } return NavigationScene.this.onBackPressed(); } }); diff --git a/library/scene/src/main/java/com/bytedance/scene/navigation/NavigationSceneManager.java b/library/scene/src/main/java/com/bytedance/scene/navigation/NavigationSceneManager.java index d8748623..e3faf413 100644 --- a/library/scene/src/main/java/com/bytedance/scene/navigation/NavigationSceneManager.java +++ b/library/scene/src/main/java/com/bytedance/scene/navigation/NavigationSceneManager.java @@ -17,6 +17,7 @@ import android.annotation.SuppressLint; import android.app.Activity; +import android.arch.lifecycle.Lifecycle; import android.arch.lifecycle.LifecycleOwner; import android.content.Context; import android.os.Build; @@ -358,7 +359,8 @@ public boolean interceptOnBackPressed() { List> copy = new ArrayList<>(mOnBackPressedListenerList); for (int i = copy.size() - 1; i >= 0; i--) { NonNullPair pair = copy.get(i); - if (pair.second.onBackPressed()) { + if (pair.first.getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.RESUMED) + && pair.second.onBackPressed()) { return true; } } diff --git a/library/scene_ui/src/main/java/com/bytedance/scene/ui/template/NavigationViewScene.java b/library/scene_ui/src/main/java/com/bytedance/scene/ui/template/NavigationViewScene.java index 32be256c..3f46832f 100644 --- a/library/scene_ui/src/main/java/com/bytedance/scene/ui/template/NavigationViewScene.java +++ b/library/scene_ui/src/main/java/com/bytedance/scene/ui/template/NavigationViewScene.java @@ -86,9 +86,6 @@ public void onClick(View v) { requireNavigationScene().addOnBackPressedListener(this, new OnBackPressedListener() { @Override public boolean onBackPressed() { - if (!getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.RESUMED)) { - return false; - } if (mDrawerLayout.isDrawerOpen(mNavigationView)) { mDrawerLayout.closeDrawer(mNavigationView); return true;