onSaveInstanceState CREATED阶段 在 Fragment 即将被销毁(如用户旋转屏幕或 Fragment 被放入后台)之前调用,作用是保存 Fragment 的瞬时状态到 Bundle...onDestroyView DESTROYED阶段 当与 Fragment 视图关联的资源被释放时调用,此时视图即将销毁,适合在此清理 UI 相关的资源。...onDestroy 当 Fragment 不再需要时调用,通常用于清理全局资源,onDestroy 触发时,Fragment 的视图生命周期结束。...视图关联的资源被释放时调用。...//onDestroy触发时,Fragment 的视图生命周期结束 Log.i(TAG, TAG + " onDestroy: 已销毁,Fragment的视图生命周期结束");
onCreate():Fragment被创建时调用 onActivityCreated():当Activity完成onCreate()时调用 onStart():当Fragment可见时调用。...onDestroyView():当Fragment的UI从视图结构中移除时调用。 onDestroy():销毁Fragment时调用。...onDetach():当Fragment和Activity解除关联时调用。 Fragment生命周期会经历:运行、暂停、停止、销毁。...销毁状态:当活动被销毁,相关联碎片进入销毁状态。...备注: 如果在Fragment中需要Context,可以通过getActivity(),如果该Context需要在Activity被销毁后还存在,则使用getActivity.getApplicationContext
the foreground”:即当前Activity被挡住一部分后(失去焦点,处于onPause状态)重新回到当前Activity时(UI最顶层)调用,比如说解屏、弹窗消失 onPause() 调用场景...被挡住一部分后(失去焦点,处于onPause状态)重新回到当前Activity时(UI最顶层)调用 onStop() 调用场景:“the activity is no longer visible”...执行oncreate方法完成了的时候会调用此方法) onDestroyView方法 Fragment中的布局被移除时调用(表示fragment销毁相关联的UI布局) onDetach方法 Fragment...和Activity解除关联的时候调用(脱离activity) fragment生命周期解析 当一个fragment被创建的时候: onAttach() onCreate() onCreateView...onPause() onStop() 当这个fragment被销毁了(或者持有它的activity被销毁了): onPause() onStop() onDestroyView()
销毁状态:该Fragment被完全删除,或该Fragment所在的Activity被结束。 结合之前学习Activity的状态,理解Fragment的状态非常简单。...各生命周期方法的含义如下: onAttach():当该Fragment被添加到Activity时被回调。该方法只会被调用一次。...onCreate(Bundle savedStatus):创建Fragment时被回调。该方法只会被调用一次。...onStop():停止 Fragment 时被回调。 onDestroyView():销毁该 Fragment 所包含的View组件时调用。...onDestroy():销毁 Fragment 时被回调。 该方法只会被调用一次。
onAttach():执行该方法时,Fragment与Activity已经完成绑定,该方法有一个Activity类型的参数,代表绑定的Activity,这时候你可以执行诸如mActivity = activity...onActivityCreated():执行该方法时,与Fragment绑定的Activity的onCreate方法已经执行完成并返回,在该方法内可以进行与Activity交互的UI操作,所以在该方法之前...onDestroyView():销毁与Fragment有关的视图,但未与Activity解除绑定,依然可以通过onCreateView方法重新创建视图。...通常在ViewPager+Fragment的方式下会调用此方法。 onDestroy():销毁Fragment。通常按Back键退出或者Fragment被回收时调用此方法。...()->onDetach()(注意退出不会调用onSaveInstanceState方法,因为是人为退出,没有必要再保存数据); Fragment被回收又重新创建:被回收执行onPause()->onSaveInstanceState
运行时被添加或删除 3.Fragment不能独立存在,它必须嵌入到activity中,而且Fragment的生命周期直接受所在的activity的影响。...例如:当activity暂停时,它拥有的所有的Fragment们都暂停了,当activity销毁时,它拥有的所有Fragment们都被销毁。...执行oncreate方法完成了的时候会调用此方法) onDestroyView方法 Fragment中的布局被移除时调用(表示fragment销毁相关联的UI布局) onDetach方法 Fragment...和Activity解除关联的时候调用(脱离activity) fragment生命周期解析 当一个fragment被创建的时候: onAttach() onCreate() onCreateView...onPause() onStop() 当这个fragment被销毁了(或者持有它的activity被销毁了): onPause() onStop() onDestroyView()
例如,当一个 Activity 被销毁时,在 LifecycleScope 内启动的协程会自动取消。...例如,在 Activity 或 Fragment 被销毁时,协程会被取消。...例如,在 Activity 或 Fragment 被销毁时,协程会被取消。...例如,在 Activity 或 Fragment 被销毁时,协程会被取消。...当 Activity 或 Fragment 被销毁时,所有在 LifecycleScope 中启动的协程都会自动取消。
当activity销毁后,位于activity中的fragment也随之销毁。 所有Fragment的子类必须包含一个无参的构造方法。...如果activity被销毁则会调用onDestroy方法 onDestroy() 当activity被销毁时会调用该方法。...Activity被销毁有两种情况,一种是用户调用了activity的finish方法结束了activity,一种是系统为节省空间销毁了activity。...栈中的activity的顺序由压入栈的顺序决定,不会被重新排序。当一个activity被加载时就会位于栈顶,当一个activity被销毁时就会被弹出,任务栈遵循“后进先出”的规则。...图一说明了当activity被加载时会位于栈顶,当按下BACK键时activity会被弹出栈并且被销毁。
Activity 的生命周期由一系列回调方法组成,这些方法在 Activity 的不同状态时被系统调用。...**调用时机**: Activity 被销毁时调用。这可能发生在以下情况下:用户主动按下返回键退出 Activity。调用 finish() 方法主动结束 Activity。...系统由于资源不足而销毁 Activity(例如内存不足时)。8. onSaveInstanceState()**作用**: 在 Activity 可能被系统销毁之前调用,用于保存临时状态数据。...**调用时机**: Activity 可能被系统销毁时调用(例如屏幕旋转或内存不足时)。...onDestroy() 的调用时机onDestroy() 会在以下情况下被调用:**用户主动退出**: 当用户按下返回键或调用 finish() 方法时,Activity 会被销毁,onDestroy(
2、Fragment生命周期 Fragment比Activity多了几个生命周期的回调方法 onAttach(): 当该Fragment被添加到Activity时被回调,该方法只会被调用一次。...onActivityCreated(): 当Fragment所在的Activity被启动完成后回调该方法。 onDestroyView(): 销毁该Fragment所包含的View组件时调用。...onDetach(): 将该Fragment从Activity中删除、替换完成时回调该方法,在onDestroy()方法后一定会回调onDetach()方法,该方法只会被调用一次。...() 向Activity中添加一个Fragment transaction.remove() 从Activity中移除一个Fragment,如果被移除的Fragment没有添加到回退栈(回退栈后面会详细说...11、后台运行缺陷 你的应用由FragmentA切换到FragmentB,被置于后台(例如用户点击了home),长时间后你会发现当你再次通过home打开时,上面FragmentA与FragmentB叠加在一起
熟悉Fragment的开发人员都知道,Fragment是依附于Activity的。当Activity销毁时,Fragment会随之销毁。...而当Activity配置发生改变(如屏幕旋转)时候,旧的Activity会被销毁,然后重新生成一个新屏幕旋转状态下的Activity,自然而然的Fragment也会随之销毁后重新生成,而新生成的Fragment...生命周期 Activity的生命周期在配置发生改变时: onPuase->onStop->onDestroy->onStart->onResume 比如在Activity中发生屏幕旋转,其生命周期就是如此...即使在其Activity重做时也不进行销毁那么就要设置setRetainInstance(true)。...和onActivityCreated还是会被调用。
运行时被添加或删除 Fragment的生命周期直接受所在的Activity的影响。...如:当Activity暂停时,它拥有的所有Fragment们都暂停 2....(表示activity执行oncreate方法完成了的时候会调用此方法) onDestroyView方法 Fragment中的布局被移除时调用(表示fragment销毁相关联的UI布局) onDetach...方法 Fragment和Activity解除关联的时候调用(脱离activity) Fragment生命周期解析 当一个fragment被创建的时候: onAttach() onCreate()...onPause() onStop() 当这个fragment被销毁了(或者持有它的activity被销毁了): onPause() onStop() onDestroyView() onDestroy
Fragment的主要功能就是创建一个View,并且有一个生命周期来管理这个View的创建和销毁。...一个Stopped状态的Fragment不没有被销毁,还在存活状态,它的状态和内部信息被系统记录和保存,只是不可见,不可交互,此时很可能会被系统回收。...与Activity类似,你可以利用Bundle来记录Fragment的状态,当Activity被销毁需要记录Fragment状态,并且在Activity重新创建的时候恢复Fragment的状态。...在生命周期中Activity与Fragment的最大不同之处是回退栈是相互独立的,Activity的回退栈是系统来管理的,Fragment的回退栈是被宿主Activity来管理的,也就是说你可以来进行控制...注意:在Fragment中你如果要获取一个Context对象,你可以调用getActivity()方法,但是调用getActivity()方法必须要在Fragment于Activity关联起来之后,否则
例如:当activity暂停时,它拥有的所有的Fragment们都暂停了,当activity销毁时,它拥有的所有Fragment们都被销毁。...当你在执行上述针对Fragment的事务时,你可以将事务添加到一个棧中,这个栈被activity管理,栈中的每一条都是一个Fragment的一次事务。...把Fragment对象跟Activity关联时,调用onAttach(Activity)方法; 2....因为Fragment对象所依附的Activity对象被挂起,或者在Activity中正在执行一个修改Fragment对象的操作,而导致Fragment对象不再跟用户交互时,系统会调用Fragment对象的...因为Fragment对象所依附的Activity对象被终止,或者再Activity中正在执行一个修改Fragment对象的操作,而导致Fragment对象不再显示给用户时,系统会调用Fragment对象的
; 从Activity是否可见来说,onStart和onStop是配对的,这两个方法可能被调用多次; 从Activity是否在前台来说,onResume和onPause是配对的,这两个方法可能被调用多次...Window只attach一个View Tree(组合模式),当Window需要重绘(如,当View调用invalidate)时,最终转为Window的Surface,Surface被锁住(locked...参考回答: 不设置Activity的android:configChanges时,切屏会销毁当前Activity,然后重新加载调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次; onPause(...():当与Fragment相关联的Activity完成onCreate()之后调用; onDestroyView():在Fragment中的布局被移除时调用; onDetach():当Fragment和...所以如果使用add一般会伴随hide()和show(),避免布局重叠; 使用add,如果应用放在后台,或以其他方式被系统销毁,再打开时,hide()中引用的fragment会销毁,所以依然会出现布局重叠
而且设置setRetainInstance(true)方法可以保证configchange时的生命周期不被改变,让这个Fragment在Activity重建时存活下来。...总结来说就是用一个空的fragment来管理维护ViewModelStore,然后对应的activity销毁的时候就去把viewmodel的映射删除。...同时由于实现了LifecycleOwner接口,所以能利用Lifecycles组件组件感知每个页面的生命周期,就可以通过它来订阅当Activity销毁时,且不是因为配置导致的destory情况下,去清除...因为配置改变而被销毁时被调用,跟onSaveInstanceState方法调用时机比较相像,不同的是onSaveInstanceState保存的是Bundle,Bundle是有类型限制和大小限制的,而且需要在主线程进行序列号...它能在ViewModel销毁时 (onCleared() 方法调用时) 退出。
onActivityCreated(): 当Fragment的宿主Activity已完成其onCreate()方法时被调用。 此时可确保Activity和Fragment的视图都已完全初始化。...onDestroyView(): 当Fragment的视图层次结构被销毁时调用。 onDestroy(): 在Fragment即将被销毁之前调用。...只要Fragment附加到Activity上,即使视图没有被创建,这个方法也会返回true。 isVisible(): 用于判断Fragment是否可见。...isRemoving(): 检查Fragment是否正在从其Activity中被移除,当Fragment执行remove操作时设置为true。...判断onCreateView()是否已调用的方法 在Android Fragment架构中,没有直接的方法来检测onCreateView()是否被调用。
例如,当 Activity 暂停时,Activity 的所有片段也会暂停;当 Activity 被销毁时,所有片段也会被销毁。...如果没有在执行删除片段的事务时调用 addToBackStack(),则事务提交时该片段会被销毁,用户将无法回退到该片段。...它会经历以下状态 onStart() onResume() Fragment进入“后台模式”的时候 它会经历以下状态 onPause() onStop() Fragment被销毁了(或者持有它的activity...被销毁了) 它会经历以下状态 onPause() onStop() onDestroyView() onDestroy() onDetach() Fragment与Activity不同的生命周期 Fragment...Fragment不同于Activity的生命周期 onAttached() —— 当fragment被加入到activity时调用(在这个方法中可以获得所在的activity)。
· 暂停状态:其他Activity位于前台,该Fragment可见,不可获得焦点。 · 停止状态:不可见,失去焦点。 · 销毁状态:该Fragment被完全删除或被结束。...二、Fragment的回调方法: 在Fragment的生命周期中,有一下方法会被回调: · onAttach():当Fragment被添加到Activity时被回调,只回调一次。 ...· onActivityCreated():Fragment所在的Activity启动完成后回调。 · onStart():每次启动或恢复Fragment时被回调。 ...· onStop():停止Fragment时回调。 · onDestroyView():销毁Fragment的View组件时回调。 ...· onDestroy():销毁Fragment时调用,一次。
ViewModel类有如下优点: ViewModel类是具有生命感知的能力,与和他绑定的Activity一样的生命周期,它可以解决请求网络时,Activity被突然销毁造成一些不必要的麻烦。...设备信息发生变更数据不会丢失(切横竖屏),其实它只有一个生命周期,检测页面销毁时触发 ViewModel 的另一个特点就是同一个 Activity 的 Fragment 之间可以使用ViewModel实现共享数据...真正退出后,它会调用,而不是销毁后调用,因为旋转屏幕也会调用onDestroy。...平常开发中不做任何操作时,如果有网络请求中,Activity被销毁,那么极有可能请求成功返回结果到activity中造成泄漏等不必要的麻烦。...网络请求时,突然销毁activity,那么与之绑定的viewmodel也会销毁,同时我们在onCleared()方法中取消网络连接接口(call.cancel()),就算是有数据返回,activity也不会收到通知