티스토리 뷰

  뒤로가기 버튼을 이용한 팝업창 종료예제는 다음의 게시물에 있습니다.

[안드로이드] 백 버튼 팝업창 종료 이벤트 예제


  

  오늘은 안드로이드 폰에 있는 뒤로 가기 버튼 ( Back Button )을 터치했을 때의 이벤트에 대해서 알아보겠습니다. 백 버튼 이벤트는 사용자가 의도치 않게 눌렀을 경우를 위해서 주로 사용자 의견을 다시 묻는 용도로 사용되고 있습니다.


안드로이드 백 버튼 이벤트 예제

  안드로이드 폰에는 거의 다 뒤로가기 버튼 즉, 백 버튼이 있기 때문에 안드로이드 스튜디오 자체에서 제공해주는 Class가 있어 가져다가 즉, Override 해서 사용하기만 하면 됩니다.


1
2
3
4
    @Override
    public void onBackPressed() {
        super.onBackPressed();
    }
cs


  제공되어 있는 onBackPressed()를 Override 하였습니다. 이제 이 안에 백 버튼을 두 번 누르면 어플에서 나가지게끔 코드를 작성해 보겠습니다. 만들기 위해서 내용을 먼저 살펴보겠습니다. 백 버튼을 2번 누르면 어플에서 나가져야 합니다. 여기서 살펴볼것이 한 번 누르고나서 시간이 엄청 지난뒤 한 번 더 눌러 나가져 버리면 안되니 그 텀(시간)을 정해 주어야합니다. 따라서 한 번 누른 뒤 몇 초 안에 다시 누를시 어플이 종료된다는 Toast 메시지를 띄우겠습니다. 이를 위해 우선 처음 눌렀을 당시의 시간이 필요합니다.


1
long first_time = System.currentTimeMillis();
cs


  System.currentTimeMillis() 는 시스템의 현재 시간을 밀리 초로 바꾼 값을 알려줍니다. 따라서 int로는 공간이 부족할 수 있으므로 long 형식으로 선언을 해주었습니다. 이제 두 번째 클릭했을 때의 시간을 second_time에 받아오도록 해보겠습니다.


1
long second_time = System.currentTimeMillis();
cs


  첫 번째 시간과 두 번째 시간을 받아오는 코드를 작성하였습니다. 이제 두 코드의 위치를 적절히 배치하여 if문을 통한 코드를 작성해 보겠습니다.


1
2
3
4
5
6
7
8
9
10
11
12
    long first_time;
    long second_time;
    @Override
    public void onBackPressed() {
        second_time = System.currentTimeMillis();
        Toast.makeText(MainActivity.this""+second_time, Toast.LENGTH_SHORT).show();
        if(second_time - first_time < 2000){
            super.onBackPressed();
            finishAffinity();
        }
        first_time = System.currentTimeMillis();
    }
cs


  Second를 먼져 받아오는것 같지만 두 번째 이벤트시 Second 값을 다시 갱신하고 First 값과 비교가 되는것을 보실 수 있습니다. 다음으로 밀리 초 단위이므로 2초인 2000을 적어 2초안에 다시 누를시 종료되게 하였습니다. 마지막으로 finishAffinity();를 보실 수 있는데 finish()를 사용하셔도 되지만 백 버튼을 누른다는건 어플을 완전히 종료할 것이라는 사용자의 생각이므로(더군다나 1번 물어보기까지 했으니!) finish 보다 강력한 finishAffinity를 사용하였습니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday