在Android中快速双击时如何防止关闭应用程序?

问题描述 投票:0回答:1

下面是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毫秒时,很好地显示了日志消息“双击”。

BUT

当我两次单击[[非常快]]时,我的应用程序隐藏在Android背景中,就像我按下了主页按钮一样。

并且当我重新打开应用程序时,方法startActivityForResult(~~,~~)似乎调用得很好。我的意思是,DetailMemoActivity已启动。

快速双击时如何防止关闭应用程序?

<< >

我正在使用像这样的双击方法。
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(); };
android android-recyclerview onitemclicklistener
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.