마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

뒤로가기 버튼 이벤트 처리 질문드려요

0 추천
private long lastTimeBackPressed;

    @Override
    public void onBackPressed()
    {
        if (System.currentTimeMillis() - lastTimeBackPressed < 2000)
        {
            Intent intent = new Intent(Playing.this, MainActivity.class);
            startActivity(intent);
            return;
        }

        Toast.makeText(this, "'뒤로' 버튼을 한번 더 누르시면" + "\n" + "시작화면으로 이동합니다.", Toast.LENGTH_SHORT).show();
        lastTimeBackPressed = System.currentTimeMillis();
    }

현재 간단한 퀴즈게임에 위 코드를 적용하여 뒤로가기 버튼을 두번 눌렀을 때 시작화면으로 이동하도록 하였습니다..

그런데 게임도중 뒤로버튼을 눌렀을 때 시작화면으로 넘어는 오지만 이전 화면에서의 게임은 종료되지 않고 계속 진행이 되다가 제한시간이 다 되면 게임결과창이 떠 버립니다..

뒤로버튼을 눌렀을 때 화면만 전환되는게 아니라 진행하던 (퀴즈게임 액티비티)가 종료되면서 시작화면으로 넘어오려면 어떻게 해야 하나요?

익명사용자 님이 2017년 11월 28일 질문

1개의 답변

0 추천
Intent intent = new Intent(Playing.this, MainActivity.class);

startActivity(intent);

finish(); 또는 this.finish();

이렇게 소스를 적어보세요. Intent로 Main 액티비티를 띄우고 기존에 있던 액티비티를 종료시키지 않아서 생기는 문제입니다.

finish() 는 현재 액티비티(퀴즈게임 액티비티)를 종료해줍니다.
yuhyeon (420 포인트) 님이 2017년 11월 28일 답변
두가지 방법 모두 해봤는데 같은 현상이네요..ㅠ
아니면 startActivity(intent)를 실행하기 전에 제한시간을 주는 타이머를 멈추고 finish한 후에 startActivity(intent)를 실행해보세요
네 안그래도 이것저것 해보다가
startActivity(intent);
mCountDown.cancel();
finishAffinity();
이게 맞는건지 모르겠지만 요렇게 넣어보니 되네요..
세심하게 잘 알려주셔서 정말 감사드립니다..^^
...