我有一个相册应用程序(这里)。GalleryActivity包含一个装载着图像缩略图的recyclerView。点击缩略图后,它会启动SlideshowActivity来显示放大的图像。我正在使用SharedElements过渡,我知道如何使用它,一切都运行良好。但是有些事情困扰了我很长时间。
这个顺序对我来说毫无意义,因为在返回转换完成后,GalleryActivity被销毁并重新创建,导致了闪烁和重新加载。难道不应该在GalleryActivity被重新创建后调用onActivityReenter,然后我们可以计划使用新布局进行返回转换吗?
目前,为了避免这种情况,我通过Manifest的
在这种情况下,顺序将变成以下形式,一切都正常工作。
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()。