Mik*_*e76 11 lifecycle android fragment
我有一个片段,显示了使用MPAndroidChart创建的折线图.加载片段大约需要200毫秒.
我想通过在片段变得可见之后加载图表数据数据来提高感知的应用程序性能.
因此,我需要在片段变得可见之后立即执行代码,但只有第一次它变得可见.
我不能使用onResume(),因为它在片段可见之前被调用.
注意:我不能使用异步任务,需要在UI线程上完成.无论如何它都没有意义,因为这是一次初始化,只需要大约200毫秒.
public class MyFragment extends Fragment{
Boolean _areLecturesLoaded =false;
@Override
onCreateView(){
//Inflate the required views. Code gets executed once View is made but not shown
return v;
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
//Code executes EVERY TIME user views the fragment
if (isVisibleToUser && !_areLecturesLoaded ) {
_areLecturesLoaded = true;
// Code executes ONLY THE FIRST TIME fragment is viewed.
}
}
}
Run Code Online (Sandbox Code Playgroud)
isVisisbleToUser是内置的,当用户查看当前片段时它是真的.在用户第一次看到片段之前,它将保持为假.如果您希望每次用户查看片段时都执行一些代码,请将代码放在此区域中但在if语句之外.
_areLecturesLoaded初始化为false,并且第一次将片段设置为true,将其设置为true,确保将来不会调用If语句,并且仅在ONCE中执行代码
所有初始化视图窗口小部件按钮等必须在onCreate()中完成,以确保没有空指针和其他此类讨厌异常的可能性.
将其放入 onViewCreated() 方法中。
| 归档时间: |
|
| 查看次数: |
5814 次 |
| 最近记录: |