abstract class LazzyBaseFragment : BaseFragment() {
//判断控件是否加载完毕
private var isCreateView = false
//判断是否已加载过数据
private var isLoadData = false
private var mIsFragmentVisible = false
/**
* 第一次会被主动调用,之后加载需手动调用方法
*/
protected abstract fun loadData()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
initVariable()
}
private fun initVariable() {
isCreateView = false
mIsFragmentVisible = false
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
isCreateView = true
if (userVisibleHint) {
mIsFragmentVisible = true
onFragmentVisibleChange(true)
}
}
/**
* 初始化加载数据
*/
private fun initLoadData() {
//如果没有加载过就加载,否则就不再加载了
if (!isLoadData) {
isLoadData = true
loadData()
}
}
override fun initData() {
}
override fun onDestroyView() {
super.onDestroyView()
initVariable()
}
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
if (userVisibleHint) {
initLoadData()
}
}
override fun viewPageChild(): Boolean {
return true
}
override fun setUserVisibleHint(isVisibleToUser: Boolean) {
super.setUserVisibleHint(isVisibleToUser)
if (!isCreateView) return
if (isVisibleToUser && !isLoadData) {
initLoadData()
}
if (isVisibleToUser) {
mIsFragmentVisible = true
onFragmentVisibleChange(true)
} else if (mIsFragmentVisible) {
mIsFragmentVisible = false
onFragmentVisibleChange(false)
}
}
}
企业级-Android - Fragment懒加载类
于 2023-05-05 18:11:37 首次发布