|
|
@@ -14,7 +14,15 @@ import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
|
-public abstract class BaseMVPFragment extends BaseFragment implements IView{
|
|
|
+public abstract class BaseMVPFragment extends BaseFragment implements IView {
|
|
|
+ /**
|
|
|
+ * 是否被创建了
|
|
|
+ */
|
|
|
+ protected boolean isViewCreated;
|
|
|
+ /**
|
|
|
+ * 当前是否可见
|
|
|
+ */
|
|
|
+ protected boolean isUIVisible;
|
|
|
|
|
|
private List<BasePresenter> mInjectPresenters;
|
|
|
|
|
|
@@ -43,8 +51,35 @@ public abstract class BaseMVPFragment extends BaseFragment implements IView{
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ isViewCreated = true;
|
|
|
+ loadData();
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void setUserVisibleHint(boolean isVisibleToUser) {
|
|
|
+ super.setUserVisibleHint(isVisibleToUser);
|
|
|
+ isUIVisible = isVisibleToUser;
|
|
|
+ if (isVisibleToUser) {
|
|
|
+ loadData();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 懒加载,当Fragment可见的时候,再去加载数据
|
|
|
+ * 应用初始化会先调用完所有的setUserVisibleHint再调用onViewCreated,然后切换的时候,就只调用setUserVisibleHint了
|
|
|
+ */
|
|
|
+ private void loadData() {
|
|
|
+ if (isViewCreated && isUIVisible) {
|
|
|
+ isViewCreated = false;
|
|
|
+ isUIVisible = false;
|
|
|
+ onLazyLoad();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ protected void onLazyLoad(){}
|
|
|
+
|
|
|
@Override
|
|
|
public void showToast(String message) {
|
|
|
ToastTool.showShort(message);
|
|
|
@@ -61,5 +96,4 @@ public abstract class BaseMVPFragment extends BaseFragment implements IView{
|
|
|
mInjectPresenters = null;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
}
|