FragmentActivity 长期后台被放置问题

前几天用到了Fragment嵌套,各个界面切换都没问题,但长期后台放置被回收后再次启动Activity(onCreate再次被调用)后Fragment却没法切换了,怀疑是Fragment嵌套问题。打印log发现父Fragment中的FragmentManager中Fragment数量是原来的两倍,由于安卓内存管理机制,不好重现,只好拼命启动各种应用,狂占内存,重现bug,但依旧没找到问题所在,百度也没找到解决方案,论坛求助也没人鸟。。。。今天 突然想到横竖屏切换(onCreate被调用)可以很方便的重新之前的bug,打印一下getSupportFragmentManager().getFragments()发现里面保存的正是上次的Fragment!!!!!!问题终于解决了

下面是关键代码,NextFragment1中建议采用类似于MainActivity的懒加载方式 
   



List list = getSupportFragmentManager().getFragments();
		if (list != null) {

			System.out.println("fs  " + list.size() + "   "
					+ Arrays.toString(list.toArray()));
//			try {//当第一次创建时,若只创建了部分Fragment则可能会越界
//				fs[0] = list.get(0);
//				fs[1] = list.get(1);
//				fs[2] = list.get(2);
//				fs[3] = list.get(3);
//				fs[4] = list.get(4);
//				 
//			} catch (Exception e) {
//				// TODO: handle exception
//			}
			
			
			/**
			 * 这步很关键!!!!
			 * 1.list获取到的元素数可能大于fs数组长度
			 * 
			 * 2.若第一次启动时,不是按照从左到右顺序先让各Fragment显示一遍的话,缓存顺序会错乱,导致下次启动时,各界面显示Fragment错乱问题
			 */
			for (int i = 0; i < fs.length&&i




 FragmentActivity 长期后台被放置问题_第1张图片


工程源码  http://pan.baidu.com/s/1qWp3MUw

你可能感兴趣的:(安卓)