当用户单击应用程序的RecyclerView单元中的某个项目时,我已经从片段实现了YouTube意图。 click事件是通过数据绑定在xml中处理的,并传递到绑定的 ViewModel ,后者将代表点击事件的 LiveData 值传递给 Fragment 。
startActivity(YouTubeIntents.createPlayVideoIntentWithOptions(activity, content.id, false, false))
但是,在触发onBackPressed()
以关闭从YouTube启动的活动并返回到原始应用屏幕之后,当屏幕旋转时,好像没有使用YouTube活动的finish()
方法一样,YouTube活动就会重新出现叫。
关闭YouTubeActivity后旋转屏幕不会触发YouTubeActivity意外重新显示。
context
更改为activity
进行了实验。context.startActivity(...)
,而不是startActivity(...)
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY)
。答案 0 :(得分:0)
这与YouTube API无关,而是与Android体系结构库组件 LiveData 相关。我正在使用 LiveData 变量传递点击事件,该事件在屏幕旋转时会再次发出。
何塞·阿尔塞雷卡(JoseAlcérreca)在他的中号帖子LiveData with SnackBar, Navigation and other events (the SingleLiveEvent case)中概述了最佳解决方案。
总而言之,Jose创建了一个Event类,用于跟踪事件是否已处理。这样,在旋转屏幕时 ViewModel 和 LiveData 不要发出对单个事件不再有效的值。