需求:
MainActivity里有几个Fragment,如果MainActivity跳转到其他Activity,再从其他Activity返回MainActivity时,MainActivity的所有Fragment都会走onResume方法。怎样让当前显示的Fragment走onResume,其他Fragment不走?
思路:
我们知道,有一个setUserVisibleHint是在fragment刚进来的时候会走的,返回的时候并不会走,可以在这个方法里面设置一个变量mIsVisible,表示当前页面是否正显示。返回该fragment的时候不走setUserVisibleHint,我可以在onResume里判断getUserVisibleHint为true时主动调用setUserVisibleHint,将mIsVisible设置成true。在onPause里主动调用setUserVisibleHint设置成false。
@Override
public void onResume() {
super.onResume();
if (getUserVisibleHint()) {
setUserVisibleHint(true);
} else {
setUserVisibleHint(false);
}
if (mIsVisible) {
setAvatar();
}
}
@Override
public void onPause() {
super.onPause();
setUserVisibleHint(false);
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
mIsVisible = true;
} else {
mIsVisible = false;
}
}