1. 文章
- Dialog,系统下拉栏 对Activity的生命周期的影响 : 无影响
- dialog 弹框时activity生命周期调用过程
- Android 下拉通知栏时Activity的生命周期——重新理解onPause()
- Android中下拉通知栏,Activity会走哪些生命周期?
- Dialog的创建,只能用Activity作为Context?
- onPause
- 对onPause调用时机的误解
- Activity什么时候调用onPause()后不调用onStop()
- 在activity的主题里加上这条属性,被该activity遮挡的Activity不会调用onStop()
- 生命周期
2.零散的点
- Activity中弹出Dialog,不会触发Activity任何生命周期函数.
- 启动1个Activity,然后弹出Dialog,再进入第2个Activity.
//启动1个Activity
TagActivityLifeCycleActivityLife: onCreate
TagActivityLifeCycleActivityLife: onStart
TagActivityLifeCycleActivityLife: onResume
//弹出Dialog
//不会改变生命周期
//进入下一个Activity
TagActivityLifeCycleActivityLife: onPause
//下一个Activity
TagActivityLifeCycleActivity2Life: onCreate
TagActivityLifeCycleActivity2Life: onStart
TagActivityLifeCycleActivity2Life: onResume
TagActivityLifeCycleActivityLife: onStop
TagActivityLifeCycleActivityLife: onSaveInstanceState
-
Activity的onPause
- 当前Activity不再可交互,但是在屏幕上依然可见,会触发onPause.
- 当前Activity的onPause必须执行结束,下一个Activity的onCreate才会执行.所以onPause中不能执行耗时逻辑.
- onPause被调用,一定是另一个Activity参与进来了.
- Toast,Dialog不会对当前Activity的生命周期产生影响,原因是它们只是使用WindowManager.addView(),并没有产生新的Activity.
- 下拉通知栏挡住当前Activity,对当前Activity的生命周期也没有影响.
android/app/Activity.java /** 当前Activity不再可交互,但是在屏幕上依然可见,会触发onPause. * Called as part of the activity lifecycle when the user no longer actively interacts with the * activity, but it is still visible on screen. The counterpart to {@link #onResume}. * 当前Activity的onPause必须执行结束,下一个Activity的onCreate才会执行.所以onPause中不能执行耗时逻辑. */ @CallSuper protected void onPause() { -
Activity生命周期
- **必须要有另一个Activity的参与,才会引起当前Activity生命周期的变化.**Dialog,Toast,下拉通知栏都不涉及新的Activity,因而不会触发当前Activity生命周期变化.
-
Activity.onWindowFocusChanged
- 弹出Dialog,下拉栏,系统弹框等 '覆盖当前Activity' 的行为,会触发onWindowFocusChanged(boolean hasFocus)
- hasFocus: tru-当前Activity获取到焦点 . false-当前Activity失去焦点.
-
创建Dialog只能用Activity的Context
Caused by: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running?
at android.view.ViewRootImpl.setView(ViewRootImpl.java:965)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:387)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:96)
at android.app.Dialog.show(Dialog.java:344)
at com.huanhailiuxin.jet2020.dialog.DialogActivity.showApplicationDialog(DialogActivity.java:24)
****
- Activity的onStop不一定会执行
- Activity onStop不回调测试
- Activity生命周期之onStop 何种情况不被调用。
- onStop并没有被回调,居然是因为第二个被启动的Activity在onResume的时候判断数据有问题把自己finish了,第一个Activity直接就重新onResume了
- B从视觉上就可以看到不能完全遮盖A,A不会执行onStop
- B的android:theme中设置了窗体透明属性为true.
- android:windowIsTranslucent 为true,(透明的,遮不住下面的Activity),被遮住的ActivityA 不会调用onStop()