zoukankan      html  css  js  c++  java
  • MainActivity 多个Fragment 内存被回收

    0. 前言

      应用首页采用Activity +Tab 模式,多个Fragment 替换显示隐藏

     1         FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
     2         hideFragments(transaction);//全部fragment设为隐藏
     3         if (null == homeFragment) {
     4            homeFragment = getSupportFragmentManager().findFragmentByTag("home");
     5             if (null == homeFragment) {
     6                   homeFragment = new HomeFragment();
     7                   transaction.add(R.id.fl_content, homeFragment, "home");
     8              }
     9          } 
    10           transaction.show(homeFragment);
    实现代码

    1. 现象分析

      当系统由于内存不足,或者其他原因,导致Activity 被回收重启时,会出现Fragment  错位现象。具体表现为:比如系统退出APP 时,APP 当前界面是PersonalFragment ,然后当MainActivity 重启之后,首页会变成PersonalFragment ,然后其他界面不变。

    2. 解决思路

      通过findFragmentByTag 获取对应的Fragment,若是为空,才创建。实现代码

      

     1         clearTabSelection(); // 清除全部选择的底部图标和颜色字体等
     2         FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
     3         hideFragments(transaction);//全部fragment设为隐藏  
     4         if (null == homeFragment) {
     5             homeFragment = getSupportFragmentManager().findFragmentByTag("home");
     6             if (null == homeFragment) {
     7                 homeFragment = new HomeFragment();
     8                 transaction.add(R.id.fl_content, homeFragment, "home");
     9              }
    10          }
    11           transaction.show(homeFragment);    
    完整版代码

    3. 问题解决!

    以一颗童心善待生活
  • 相关阅读:
    正睿提高组2017模拟题三T1
    数位dp【转载】
    正睿提高组2017模拟题二T2
    【树状数组二维区间加+区间查询模板】bzoj3132
    【树状数组区间加+区间查询模板】洛谷P3372
    51Nod
    CodeForces 631E Product Sum
    CodeForces
    [不知道哪来的题] 完美理论
    CodeForces
  • 原文地址:https://www.cnblogs.com/lizhilin2016/p/9067623.html
Copyright © 2011-2022 走看看