我有一个图库应用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()。