|
|
@@ -10,6 +10,7 @@ import androidx.lifecycle.Observer;
|
|
|
import com.miekir.mvp.base.BaseActivity;
|
|
|
import com.miekir.mvp.bean.DataResult;
|
|
|
import com.miekir.mvp.constant.BaseMvpResponse;
|
|
|
+import com.miekir.mvp.constant.BaseMvpSource;
|
|
|
import com.miekir.mvp.presenter.BaseViewModel;
|
|
|
import com.miekir.mvp.presenter.DataMethod;
|
|
|
import com.miekir.mvp.presenter.InjectViewModel;
|
|
|
@@ -27,6 +28,17 @@ public abstract class BaseMvpActivity extends BaseActivity implements IView {
|
|
|
private List<Method> mDataMethodList = new ArrayList<>();
|
|
|
private List<BaseViewModel> mInjectPresenters = new ArrayList<>();
|
|
|
|
|
|
+ private volatile int mLoadingNum;
|
|
|
+ public synchronized int onLoadTimeChange(boolean isAdd) {
|
|
|
+ if (isAdd) {
|
|
|
+ mLoadingNum = mLoadingNum +1;
|
|
|
+ } else {
|
|
|
+ mLoadingNum = mLoadingNum -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ return mLoadingNum;
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
|
super.onCreate(savedInstanceState);
|
|
|
@@ -65,7 +77,13 @@ public abstract class BaseMvpActivity extends BaseActivity implements IView {
|
|
|
public void onChanged(final DataResult result) {
|
|
|
// 回调是在主线程
|
|
|
// Log.i("Thread", String.valueOf(Thread.currentThread() == Looper.getMainLooper().getThread()));
|
|
|
- onDataResult(result);
|
|
|
+ if (result.getSourceCode() == BaseMvpSource.DIALOG_SHOW) {
|
|
|
+ onLoadTimeChange(true);
|
|
|
+ } else if (result.getSourceCode() == BaseMvpSource.DIALOG_DISMISS) {
|
|
|
+ onLoadTimeChange(false);
|
|
|
+ } else {
|
|
|
+ onDataResult(result);
|
|
|
+ }
|
|
|
}
|
|
|
};
|
|
|
if (injectViewModel.isPersist()) {
|
|
|
@@ -180,7 +198,10 @@ public abstract class BaseMvpActivity extends BaseActivity implements IView {
|
|
|
* @param result
|
|
|
*/
|
|
|
private void onDataResult(DataResult result) {
|
|
|
- dismissLoading();
|
|
|
+ if (mLoadingNum == 0) {
|
|
|
+ dismissLoading();
|
|
|
+ }
|
|
|
+
|
|
|
Class objParamClass = result.getBean().getClass();
|
|
|
for (Method method : mDataMethodList) {
|
|
|
Class methodParamClass = method.getParameterTypes()[2];
|