如果方向发生变化,活动会在onActivityReenter之后销毁

时间:2018-12-22 09:08:00

标签: android android-lifecycle activity-lifecycle android-transitions shared-element-transition

我有一个图库应用here。 GalleryActivity包含带有图片缩略图的recyclerView。单击缩略图后,它将启动SlideshowActivity放大图像。我正在使用SharedElements过渡,我知道如何使用它,并且一切正常。但是有一段时间困扰着我。

GalleryActivity以纵向模式启动。进入SlideshowActivity后,用户将手机旋转到横向模式并按回去。下面是被称为的序列。

SlideshowActivity | finishAfterTransition
GalleryActivity | onActivityReenter 
// I call supportPostponeEnterTransition() in onActivityReenter
GalleryActivity | onStart
GalleryActivity | onConfigurationChanged
// App will hang here if I do not call supportStartPostponedEnterTransition() by now
SlideshowActivity | finish
// Back transition starts here
SlideshowActivity | onPause
GalleryActivity | onStop
GalleryActivity | onDestroy
GalleryActivity | onCreate
GalleryActivity | onStart
GalleryActivity | onActivityResult
GalleryActivity | onResume

这个序列对我来说毫无意义,因为在向后过渡完成之后,GalleryActivity被销毁并重新创建,这导致闪烁并重新加载。重新创建GalleryActivity之后不应该调用onActivityReenter吗,那么我们可以计划使用新视图进行向后过渡吗?

现在,为了避免这种情况,我自己通过清单android:configChanges="orientation|screenSize处理GalleryActivity的配置更改。据我所知,我们应该避免这样做。这是我们需要的情况之一吗?

在这种情况下,序列将变为下面,一切正常。

SlideshowActivity | finishAfterTransition
GalleryActivity | onActivityReenter
// I call supportPostponeEnterTransition() in onActivityReenter
GalleryActivity | onStart
GalleryActivity | onConfigurationChanged
// I call supportStartPostponeEnterTransition() once the view is ready
SlideshowActivity | finish
SlideshowActivity | onPause
GalleryActivity | onActivityResult
GalleryActivity | onResume

请告诉我是否有适当的方法来处理此问题,而无需自己处理onConfigurationChanged()。

1 个答案:

答案 0 :(得分:0)

enter image description here 您好@ tingyik90最好调用上一个活动。.您可以使用意图过滤器 Tasks and Back Stack