Android开发— Activity生命周期和fragment的生命周期

(图片就借鉴一下其他作者的,见谅!)
Activity的生命周期在业务逻辑上的处理一定要慎重!!!
Android开发— Activity生命周期和fragment的生命周期_第1张图片
Fragment的生命周期同样十分重要,并且要常用frgment懒加载方案更要注意这种方式,其生命周期图

同时我们都知道 Fragment 是依赖于 Activity 存在的,它们的生命周期很相似;同样的有一张图说明了

在案列和原理得到可以得到:
Fragment的onAttach() 和 onCreate() 在与 Activity 第一次关联时调用,onDestroy() 和 onDetach() 在主 Activity 销毁时才会被调用;并且Fragment 通过 addToBackStack() 只涉及到 onCreateView() 和 onDestroyView() 之间的生命周期,所以说add() 和 replace() 不会对 Fragment 的整个生命周期产生影响,但是 add() 方法会造成 主Activity上的Fragment 叠加显示;在我们开发过程中经常使用Activity,Fragment和ViewPager 结合使用,通过 hide() 、 show() 来隐藏、显示Fragment,此时 Fragment 只改变了可见性,通过测试这并不涉及fragment和主Activity的生命周期的改变。但是会有Activity数据传递到Frgment做处理显示或者从Frgment数据传递到Activity,我的处理办法都是在Frgment类中创建可访问方法传递数据进去(Frgment向Activity也同样可以)当然用bundle和采用接口方式也是极好的,这要看个人喜好。
Activity,Fragment和ViewPager 结合使用中,根据需求显示隐藏特指的Frgment我的采用方式是:

 FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
 transaction.add(R.id.fl_activity_XXX, mXXXFragment).commitAllowingStateLoss();
 transaction
             .hide(mXXXFragment)
             .show(mNowFragment);
     //mXXXFragment表示当前的frgment,mNowFragment表示要添加显示的frgment           
  1. 系统配置改变(屏幕切换等),可在配置文件中设置android:configChangeds 或者 android:screenOrientation="portrait"
  2. 系统资源不足,Activity按照优先级从低到高(后台,可见非前台,前台)被销毁。
  3. 抛出异常销毁与重建activity时:
    根据需求在AndroidManifest.xml设置启动模式和在基类中设置
/**
     * 初始化保存的数据
     */
    protected void initInstanceState(Bundle savedInstanceState) {

    }

你可能感兴趣的:(android)