android - Android 当双击按钮开始另一个活动时,应用程序关闭而不会崩溃
问题描述
我的应用程序包含 2 个活动。
- 主要活动
- 测试活动
在 MainActivity 中有一个按钮,当单击该按钮时,会启动 TestActivity。应用程序的主题是“Theme.AppCompat.Light.Dialog”并使用此代码设置窗口大小。
window.apply{
attributes.apply {
width = 800
height = 800
}
clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)
setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
}
问题是,当我非常快速地多次单击该按钮时,我的应用程序将关闭而没有任何错误。
当我通过最近的应用程序回到应用程序时,我可以看到 TestActivity 打开。当我通过最近的应用程序进入应用程序时,按钮可以正常工作。此外,将应用程序主题设置为“Theme.AppCompat.Light.NoActionBar”,它也可以正常工作。
所以我试图通过几种方式避免双击,但没有什么不同。我的代码之一是这样的。
button.setOnClickListener {
Log.d("TAG", "button clicked")
if (SystemClock.elapsedRealtime() - mLastClickTime < 1000){
return@setOnClickListener
}
mLastClickTime = SystemClock.elapsedRealtime()
startActivity(Intent(this, TestActivity::class.java))
}
“Theme.Appcompat.Dialog”有什么问题吗?
MainActivity 的生命周期在 onStop() 处停止,而不是在 onDestroy() 处。在调用 onStop() 之前,我可以看到日志。
W/libEGL:EGLNativeWindowType 0x7527b63010 断开连接失败
它只发生在我的设备(Android 8.0)上。另一台设备(android 10.0)没问题。
如果
<item name="android:windowIsTranslucent">true</item>
将其添加到 style.xml,就会发生。在我删除这个之后,它工作正常。
解决方案
推荐阅读
- node.js - 护照 jwt 与护照本地会话
- excel - 如何将带有 VBA 宏的 Excel 工作表从一张工作表复制到同一工作簿中的另一张工作表
- html - 如何将 iframe 大小包装在引导模式中
- go - 从 html 标签中清除字符串的最佳方法是什么
- go - 谷歌文本检测 API 对来自本地和云端的相同图像给出不同的响应
- python - 如何创建 Docker 映像以同时运行 Python 和 R?
- c# - RESPONSE_SERVER 重写规则不适用于所有响应标头
- javascript - Node.js 返回空数组
- gatsby - 如何使用迁移的 HTML 内容为 Gatsby 创建博客条目
- dialogflow-es - 谷歌助手拒绝登录时多次给出相同的响应