简书同步发布:http://www.jianshu.com/p/13fd3648cf9b
fragment很多优势,但也很多坑。
公司的项目切换fragment时都使用了replace(),我想这样会不会让fragment反复地实例化呢?能不能优化呢?于是开始了探索。
分析可能有点乱,先直接上结论:使用add()/show()可避免反复实例化。但是条件是不和addtobackstack()同时使用,并且重写onSaveInstanceState(),当然也不能反复new fragment()。
简单的代码示例
public class MainActivity extends BaseActivity{
private HomeFragment homeFragment;
private ChatFragment chatFragment;
private HomeFragment getHomeFragment(){
if(homeFragment == null){
homeFragment = new HomeFragment();
}
return homeFragment;
}
private ChatFragment chatFragment(){
if(chatFragment == null){
chatFragment = new ChatFragment();
}
return chatFragment;
}
protected void onCreate(Bundle savedInstanceState) {
......