我正在编写一个具有自动播放功能的应用,基本上就像一本故事书。我为每个活动(页面)设置了一个媒体播放器onCompletionListener
,这样当叙述完成后,它就会启动下一个活动(页面)。有一个选项可以关闭自动播放(所以你可以按自己的节奏阅读)...但是关闭它会导致活动 - 当前页面 - “记住”之前的onCompletionListener
电话(作为后退按钮用于导航回上一个活动)。随后的活动(页面)工作正常......因为启动onCompletionListener
的逻辑检查使其无法执行。
我还尝试将该逻辑检查移至onStart()
[而不是onCreate
],因为切换自动播放的菜单会占用整个屏幕并导致之前的活动(页面)执行{ {1}}。虽然此设置会使onStop()
再次执行...但它仍然不会“取消”之前的onCompletionListener
。注意:仅当使用onCompletionListener
启动活动(页面)时,这只是一个问题。
我还尝试autoplay=on
针对该特定活动试图“重启”所有内容(希望包括super.recreate()
)。但是,结果并不漂亮(活动消失了,从未重新初始化)。
我没有包含任何代码(对我而言)这更像是一个程序问题。 1. onCompletionListener
可以“取消”。如果是这样,怎么样? 2.如果没有,(因为我对java / android比较新)是重新创建的方法可以接受/有益于“重置”整个活动(以及它内部的onCompletionListener
)吗?
我的目标是API 11及更高版本。任何想法/建设性的批评都会受到赞赏。
答案 0 :(得分:0)
“取消”它的方法是使用release方法。当你打开一个新页面(活动)时,你应该考虑这样做
答案 1 :(得分:0)
如果您想取消之前设置的onCompletionListener
,您只需设置一个不执行任何操作的新内容。
答案 2 :(得分:0)
以下是一些可能的解决方案:
对于onDestroy,使用setOnCompletionListener(null)。
根据所需的设置更改,还设置一个全局标志(也将在创建应用程序时设置),并在侦听器事件中检查标志。