【发布时间】:2018-09-22 18:21:54
【问题描述】:
问题
当用户单击应用的 RecyclerView 单元格中的项目时,我已从 Fragment 实现 YouTube 意图。点击事件通过数据绑定在 xml 中处理并传递给绑定的 ViewModel,后者将代表点击事件的 LiveData 值传递给 Fragment。
startActivity(YouTubeIntents.createPlayVideoIntentWithOptions(activity, content.id, false, false))
但是,在触发onBackPressed()关闭从YouTube启动的Activity并返回到原始应用屏幕后,当屏幕旋转时,YouTube Activity重新出现,就好像YouTube Activity的finish()方法没有被调用一样。
预期
关闭 YouTubeActivity 后旋转屏幕不会触发 YouTubeActivity 意外重新显示。
尝试的解决方案
- 尝试将传递到 Intent 的上下文从
context更改为activity。 - 从片段调用
context.startActivity(...),而不是startActivity(...) - 为新的活动意图添加了一个标志:
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY)as per this answer。 - 将 YouTube 意图包装在“无头”片段(没有 UI 的片段)中,以尝试控制生命周期。
【问题讨论】: