在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中快速双击时如何防止关闭应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

双击时如何使Windows批处理文件暂停?

C# 中的 LinkLabel 在双击时复制其文本

Android:如何检测双击?

如何在双击时禁用WPF TreeView中树项的展开/折叠

在 Kivy 上双击时如何回调和打印 MDLabel 的文本?

Android防止双击微调器