下面是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();
};