diff --git a/app/src/main/java/com/mirkowu/mvm/ui/mvvm/viewbinding/DataBindingFragment.kt b/app/src/main/java/com/mirkowu/mvm/ui/mvvm/viewbinding/DataBindingFragment.kt index 47a8c43..c532c3f 100644 --- a/app/src/main/java/com/mirkowu/mvm/ui/mvvm/viewbinding/DataBindingFragment.kt +++ b/app/src/main/java/com/mirkowu/mvm/ui/mvvm/viewbinding/DataBindingFragment.kt @@ -233,10 +233,10 @@ class DataBindingFragment : BaseFragment() { //todo 方式2 mMediator.getPing2LiveData().observeRequest(this) { - onLoading { } + onLoading {showLoadingDialog("")} onSuccess { } onFailure { } - onFinish { } + onFinish { hideLoadingDialog()} } } diff --git a/lib_base/src/main/java/com/mirkowu/lib_base/activity/BaseMVMActivity.java b/lib_base/src/main/java/com/mirkowu/lib_base/activity/BaseMVMActivity.java index 0b96f96..7d84e90 100644 --- a/lib_base/src/main/java/com/mirkowu/lib_base/activity/BaseMVMActivity.java +++ b/lib_base/src/main/java/com/mirkowu/lib_base/activity/BaseMVMActivity.java @@ -22,6 +22,7 @@ import com.mirkowu.lib_widget.dialog.LoadingDialog; import java.lang.reflect.Method; +import java.util.concurrent.atomic.AtomicInteger; /** * 更多可配置的 @@ -32,6 +33,8 @@ public abstract class BaseMVMActivity extends AppCompatA protected M mMediator; private LoadingDialog mLoadingDialog; + private AtomicInteger mLoading = new AtomicInteger(0); + @Override protected void onCreate(@Nullable Bundle savedInstanceState) { @@ -95,12 +98,13 @@ public void showLoadingDialog(final String msg) { runOnUiThread(new Runnable() { @Override public void run() { - if (mLoadingDialog != null && mLoadingDialog.isVisible()) { + if (mLoading.getAndIncrement() != 0 && mLoadingDialog != null) { mLoadingDialog.setMessage(msg); return; } - mLoadingDialog = new LoadingDialog(msg); - if (!isFinishing() && !mLoadingDialog.isVisible()) { + + if (!isFinishing()) { + mLoadingDialog = new LoadingDialog(msg); mLoadingDialog.showAllowingStateLoss(getSupportFragmentManager()); } } @@ -112,7 +116,7 @@ public void hideLoadingDialog() { runOnUiThread(new Runnable() { @Override public void run() { - if (mLoadingDialog != null) { + if (mLoading.decrementAndGet() == 0 && mLoadingDialog != null) { mLoadingDialog.dismissAllowingStateLoss(); mLoadingDialog = null; } diff --git a/lib_util/src/main/java/com/mirkowu/lib_util/livedata/SingleLiveData.java b/lib_util/src/main/java/com/mirkowu/lib_util/livedata/SingleLiveData.java index dd25f98..a3461dd 100644 --- a/lib_util/src/main/java/com/mirkowu/lib_util/livedata/SingleLiveData.java +++ b/lib_util/src/main/java/com/mirkowu/lib_util/livedata/SingleLiveData.java @@ -19,6 +19,14 @@ public class SingleLiveData extends MutableLiveData { private final AtomicBoolean mPending = new AtomicBoolean(false); + public SingleLiveData() { + super(); + } + + public SingleLiveData(T value) { + super(value); + } + @MainThread public void observe(LifecycleOwner owner, final Observer observer) {