1.正常情况下A 页面跳转到B 页面 调用
08-06 17:41:48.180 25083-25083/? I/gsc: onCreate 08-06 17:41:48.190 25083-25083/? I/gsc: onStart() 08-06 17:41:48.190 25083-25083/? I/gsc: onResume() 08-06 17:41:50.710 25083-25083/com.org.gsc.testactdemo I/gsc: onPause() 08-06 17:41:50.730 25083-25083/com.org.gsc.testactdemo I/gsc: OnePage:onCreate 08-06 17:41:50.730 25083-25083/com.org.gsc.testactdemo I/gsc: OnePage:onStart() 08-06 17:41:50.750 25083-25083/com.org.gsc.testactdemo I/gsc: OnePage: onResume() 08-06 17:41:51.180 25083-25083/com.org.gsc.testactdemo I/gsc: onStop()2.B 页面为透明页面时调用:
08-06 17:43:43.410 26988-26988/? I/gsc: onCreate 08-06 17:43:43.410 26988-26988/? I/gsc: onStart() 08-06 17:43:43.410 26988-26988/? I/gsc: onResume() 08-06 17:43:46.310 26988-26988/com.org.gsc.testactdemo I/gsc: onPause() 08-06 17:43:46.320 26988-26988/com.org.gsc.testactdemo I/gsc: OnePage:onCreate 08-06 17:43:46.370 26988-26988/com.org.gsc.testactdemo I/gsc: OnePage:onStart() 08-06 17:43:46.370 26988-26988/com.org.gsc.testactdemo I/gsc: OnePage: onResume()
总结 B页面为透明主题时,A 页面 不在调用他自己的stop 方法:
为啥不调用A 页面的 stop 表面解释为,A 页面被没有消失,在B 页面的下层
下面从源码角度分析:
看一下 onstop 方法:
protected void onStop() { if (DEBUG_LIFECYCLE) Slog.v(TAG, "onStop " + this); if (mActionBar != null) mActionBar.setShowHideAnimationEnabled(false); mActivityTransitionState.onStop();主要在这里就此方法深入其中 getApplication().dispatchActivityStopped(this); mTranslucentCallback = null; mCalled = true; } public void onstop() { 222 restoreExitedViews();// 这句话是关键,只做了保存显示View 的 223 if (mEnterTransitionCoordinator != null) { 224 mEnterTransitionCoordinator.stop(); 225 mEnterTransitionCoordinator = null; 226 } 227 if (mReturnExitCoordinator != null) { 228 mReturnExitCoordinator.stop(); 229 mReturnExitCoordinator = null; 230 } 231 } ## 总结: 应为跳到透明主题,页面别没有消失,所以也不会调用Onstop 方法