我有一个画廊应用 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,然后我们可以计划在新 View 布局的情况下进行返回转换吗?

现在,为了避免这种情况,我自己通过 Manifest 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()。

最佳答案

android - 如果方向改变,则在 onActivityReenter 后 Activity 被破坏-LMLPHP 嗨@tingyik90 最好记忆以前的 Activity .. 你可以使用 Intent 过滤器
Tasks and Back Stack

关于android - 如果方向改变,则在 onActivityReenter 后 Activity 被破坏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53894363/

10-11 00:39