在Android中快速双击时如何防止关闭应用程序?
Posted
技术标签:
【中文标题】在Android中快速双击时如何防止关闭应用程序?【英文标题】:How can I prevent closing app when I double-click fast in Android? 【发布时间】:2020-06-07 03:54:20 【问题描述】:下面是Utils.kt
中的复查方法
var mLastClickTime: Long = 0
fun isDoubleClicked(): Boolean
if(SystemClock.elapsedRealtime() - mLastClickTime < 1000)
Log.d(TAG, "double clicked")
return true
mLastClickTime = SystemClock.elapsedRealtime()
return false
下面是isDoubleClicked()
方法的用法。
memoAdapter.itemClick = object : MemoAdapter.OnItemClickListener
override fun onItemClick(memo: Memo, view: View)
if (isDoubleClicked()) return
val intent = Intent(this@MainActivity, DetailMemoActivity::class.java)
intent.putExtra(EXTRA_ID, memo.id)
intent.putExtra(EXTRA_TITLE, memo.title)
intent.putExtra(EXTRA_CONTENT, memo.content)
intent.putExtra(EXTRA_PHOTO, memo.photos)
intent.putExtra(EXTRA_TIMESTAMP, memo.timestamp)
startActivityForResult(intent, EDIT_MEMO_REQUEST)
当我点击两次不是那么快但少于 1000 毫秒时,日志消息“双击”显示得很好。
但是
当我点击两次非常快时,我的应用会隐藏到 android 背景中,就像我按下了主页按钮一样。
当我重新打开应用程序时,startActivityForResult(~~,~~)
方法似乎已经被很好地调用了。我的意思是,DetailMemoActivity
已启动。
快速双击时如何防止关闭应用?
【问题讨论】:
你的意思是应用崩溃了吗? @einUsername Logcat 中没有任何关于应用程序崩溃的错误消息,这是唯一的警告消息 [W/libEGL: EGLNativeWindowType 0x7cde103010 disconnect failed] 所以 if (isDoubleClicked()) return 基本上意味着如果它被双击就退出该方法,对吗?尝试 if (!isDoubleClicked()) return 或使用一些 和 【参考方案1】:我正在使用这样的双击方法。
private long timestamp = 0;
private void doubleClickListener()
long elapsedTime = System.currentTimeMillis() - timestamp;
if (elapsedTime < 500 && elapsedTime > 100)
Log.d("TAG", "multi tap detected. elapsed time: " + elapsedTime);
timestamp = 0;
return;
timestamp = System.currentTimeMillis();
;
【讨论】:
非常感谢您的回答,但它对我不起作用。 它什么都不做吗?您必须从普通的 onClick 方法调用此方法。 确定我做到了。但同样的事情发生在我身上 也许问题出在其他地方。也许在 DetailMemoActivity 中。 @ einUsername 是的,我也这么认为.. 好的,现在我要让所有 DetailMemoActivity 代码单独注释并删除它们,直到找出问题所在。非常感谢! :)以上是关于在Android中快速双击时如何防止关闭应用程序?的主要内容,如果未能解决你的问题,请参考以下文章