【发布时间】:2018-12-22 09:07:59
【问题描述】:
我有一个图库应用 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 ,然后我们可以计划在新视图布局的情况下进行反向过渡?
现在,为了避免这种情况,我正在通过 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 android-lifecycle activity-lifecycle android-transitions shared-element-transition