From fa434b274d808d1797a7697a5a85689150a05106 Mon Sep 17 00:00:00 2001 From: Gavriil Sitnikov Date: Thu, 23 Jun 2016 14:25:52 +0300 Subject: [PATCH] fix of click listening --- .../navigation/activities/BaseActivity.java | 17 +++++++++++++++++ .../roboswag/components/utils/UiUtils.java | 8 ++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/main/java/ru/touchin/roboswag/components/navigation/activities/BaseActivity.java b/src/main/java/ru/touchin/roboswag/components/navigation/activities/BaseActivity.java index de4d463..1a8e8f0 100644 --- a/src/main/java/ru/touchin/roboswag/components/navigation/activities/BaseActivity.java +++ b/src/main/java/ru/touchin/roboswag/components/navigation/activities/BaseActivity.java @@ -29,6 +29,11 @@ public abstract class BaseActivity extends AppCompatActivity private final BehaviorSubject isStartedSubject = BehaviorSubject.create(); @NonNull private final BaseUiBindable baseUiBindable = new BaseUiBindable(isCreatedSubject, isStartedSubject); + private boolean resumed; + + public boolean isResumed() { + return resumed; + } @Override protected void onCreate(@Nullable final Bundle savedInstanceState) { @@ -42,6 +47,18 @@ public abstract class BaseActivity extends AppCompatActivity isStartedSubject.onNext(true); } + @Override + protected void onResume() { + super.onResume(); + resumed = true; + } + + @Override + protected void onPause() { + resumed = false; + super.onPause(); + } + @Override protected void onStop() { isStartedSubject.onNext(false); diff --git a/src/main/java/ru/touchin/roboswag/components/utils/UiUtils.java b/src/main/java/ru/touchin/roboswag/components/utils/UiUtils.java index 7b66e1b..ad6c5e7 100644 --- a/src/main/java/ru/touchin/roboswag/components/utils/UiUtils.java +++ b/src/main/java/ru/touchin/roboswag/components/utils/UiUtils.java @@ -25,6 +25,7 @@ import android.view.ViewGroup; import java.util.concurrent.atomic.AtomicInteger; import ru.touchin.roboswag.components.navigation.AbstractBaseFragment; +import ru.touchin.roboswag.components.navigation.activities.BaseActivity; import rx.functions.Action0; import rx.functions.Func1; @@ -180,9 +181,12 @@ public final class UiUtils { } final Runnable runnable = () -> { - if (targetView.getWindowVisibility() == View.VISIBLE) { - onClickListener.onClick(targetView); + if (targetView.getWindowVisibility() != View.VISIBLE + || !targetView.hasWindowFocus() + || (targetView.getContext() instanceof BaseActivity && !((BaseActivity) targetView.getContext()).isResumed())) { + return; } + onClickListener.onClick(targetView); }; targetView.setOnClickListener(v -> {