FLAG_ACTIVITY_CLEAR_TOP launches new instance
错误
在使用NavUtils.navigateUpFromSameTask(this)
导航到父Activity时,页面切换的动画是从右往左滑动,这样的动画看起来不像是返回动画,而是打开了一个新的页面的动画。
原因
SDK版本小于16时,NavUtilsImpl
的实现是NavUtilsImplBase
,其中的navigateUpTo
方法是实现是添加了flagIntent.FLAG_ACTIVITY_CLEAR_TOP
。
关于Intent.FLAG_ACTIVITY_CLEAR_TOP
,官方文档中是这样描述的
If the activity being started is already running in the current task, then instead of launching a new
instance of that activity, all of the other activities on top of it are destroyed and this intent is
delivered to the resumed instance of the activity (now on top), through onNewIntent()).
但是实际情况,单单一个Intent.FLAG_ACTIVITY_CLEAR_TOP
还是会创建新的实例,在stackoverflow有一个相关的问题。
需要Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP
才会执行onNewIntent
。