我将尽我所能解释正在发生的事情,并展示一些代码,其中涉及的内容太多了,不可能放在这里。我有一个安卓设备,有几个硬件按钮,我们可以通过
MainActivity
有点像这样。。。
override fun dispatchKeyEvent(event: KeyEvent?): Boolean {
val key = getKey(event)
// do some stuff
lifecycleScope.launch {
delay(1)
keyboardEvents.offer(key)
}
}
SimpleFragment
viewLifecycleOwner.lifecycleScope.launch {
mainActivity.listenForHardwareButtons().collect {
try {
viewModel.onButtonPressed(it)
} catch (e: Throwable) {
Timber.e(e)
}
// other stuff
}
最后,我们所有的视图模型在需要时都有以下功能:
override suspend fun onButtonPressed(button: HardwareButton) {
// deal with button presses
}
在导航到一个片段后,我可以点击任何一个硬件按钮一次,它们就会按预期工作。随后的按钮按下仅使其尽可能远
主要活动
不要慢慢地进入任何可见的片段。
我知道这不算什么,但这是我的全部。如果有人有什么建议,我很乐意听听。