如果方向改变,onActivityReenter后Activity会被销毁

4
我有一个相册应用程序(这里)。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,然后我们可以计划使用新布局进行返回转换吗?
目前,为了避免这种情况,我通过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()。


这个问题解决了吗?我遇到了同样的问题,当方向或活动转到后台时,过渡动画不起作用。 - MDT
@Manti_Core 我已经将我的应用程序开源在这里。我记得当时使用了一些奇怪的技巧来解决它,现在无法确切地回忆起来。代码应该会有所帮助。 - tingyik90
@Manti_Core 整个转换过程的主要代码应该是这个 - tingyik90
1个回答

0

你能更精确一些吗?谢谢。 - tingyik90
调用已经存在于后台堆栈中的活动,不分配新内存,将使用先前打开的活动...##请检查链接和图像。 - satyan_android
我觉得你误解了我的问题。不管怎样,还是谢谢你。 - tingyik90

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接