fragment的问题

来源:互联网 发布:豆瓣淘宝卖家讨论区 编辑:程序博客网 时间:2024/04/30 02:16

问题:项目中使用到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的生命周期的方法很重要,需要明白他的调用顺序再根据需求去初始化自己想要的数据;

0 0
原创粉丝点击