Как я могу предотвратить закрытие приложения, если дважды щелкнуть быстро в Android? - PullRequest
0 голосов
/ 23 февраля 2020

Ниже приведен метод двойной проверки в 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 запущено.

Как я могу предотвратить закрытие приложения, когда я дважды щелкаю быстро?

1 Ответ

0 голосов
/ 23 февраля 2020

Я использую такой метод двойного щелчка.

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();
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...