java 只有在可见并完成初始化时才会丢弃数据的片段。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 只有在可见并完成初始化时才会丢弃数据的片段。相关的知识,希望对你有一定的参考价值。
public abstract class LazyFragmentBase extend Fragment {
protected boolean isVisible;
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if(getUserVisibleHint()) {
isVisible = true;
onVisible();
} else {
isVisible = false;
onInvisible();
}
}
protected void onVisible() {
lazyLoad();
}
protected void onInvisible() {
// no-op
}
protected abstract void lazyLoad();
}
public class LazyFragment extends LazyFragmentBase {
private boolean isPrepared; // 标志位, 标志已经初始化完成
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_open_result, container, false);
// 初始化 view 的各控件
isPrepared = true;
lazyLoad();
return view;
}
@Override
protected void lazyLoad() {
if (!isPrepared || !isVisible) {
return;
}
//填充各控件的数据
}
}
以上是关于java 只有在可见并完成初始化时才会丢弃数据的片段。的主要内容,如果未能解决你的问题,请参考以下文章
为啥有些字段只有在调试模式激活时才可见?
在 Web 服务中返回列表时,只有在返回值时才会出现错误?
为什么只有当函数不使用序列破坏时才会发生StackOverflowError?
在我的 Flutter 应用中,只有当我们触摸屏幕时才会加载页面内容。为啥?
Vue的11个生命周期函数的用法
Vue的11个生命周期函数的用法