本文主要是介绍fragment的问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题:项目中使用到fragment并且在fragment 的oncreateView()启动一个线程作为定时器去请求网络数据,登录的时候有两个不同的角色一个角色到MainActivity,添加fragment时候,fragment的生命周期是正常执行在oncreateView方法中给flag=false了值然后执行请求网络数据的线程是可以的,如果当你在离开fragment暂停线程的时候或onDestroy()的时候将flag=true,当你第二次进入fragment时候,flag任然等于true,及时你在fragment 的onresume()中将flag=false;但是线程依然不能执行:
原因:是跟fragment的生命周期有关系:定第二次启动时,frament其实没有被系统及时回收,所以他的成员变量依然是原先的值。
分析:fragment生命周期:onAttach()--->oncreate()--> oncreateView()--->onStart()-->onresume()....,
可见onresume是在oncreateView后面执行的所以在onresume中赋值变量flag=false,而oncreateView请求网络的线程已经启动,所以是flag=true(之前)
解决:在oncreateView()或onCreate()中给成员变量初始化赋值
总结:fragment的生命周期的方法很重要,需要明白他的调用顺序再根据需求去初始化自己想要的数据;
这篇关于fragment的问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!