Android – 이전 버튼을 두 번 누르면 앱을 종료 with. 코틀린

onBackPressed 메소드는 ‘이전 버튼’을 누를 시 호출되는 메소드입니다.

원래 (이전 버튼을 입력했을 때 프로그램을 종료) 하는 기능을 가집니다.

‘메소드 재정의’ 를 통해 이전 버튼 두 번을 클릭해야 프로그램을 종료되게 만들어 봅시다.

  private var lastTimeBackPressed:Long=-1500

 // 이전 버튼 두 번 눌러서 종료하기
    override fun onBackPressed() {
        // (현재 버튼 누른 시간-이전에 버튼 누른 시간) <=1.5초일 때 동작
        if(System.currentTimeMillis()-lastTimeBackPressed<=1500)
            finish()
        lastTimeBackPressed=System.currentTimeMillis()
        Toast.makeText(this,"이전 버튼을 한 번 더 누르면 종료됩니다",Toast.LENGTH_SHORT).show()
    }

System클래스의 currentTimeMillils함수는 현재까지 앱 구동 시간을 반환합니다.

이해를 위해 8번 라인부터 살펴 봅시다!

onBackPressed가 호출되면,
lastTimeBackPressed 변수는 currentTimeMillils() 반환 값(현재까지 앱 구동 시간)으로 저장됩니다.

이후,
onBackPressed가 한 번 더 호출되고 currentTimeMillis()-lastTimeBackPressed를 하면
현재까지 앱 구동 시간-과거까지 앱 구동 시간이 됩니다.

다르게 해석하면 현재 버튼 누른 시간-이전에 버튼 누른 시간이 되군요!
뺀 값이 1500보다 작으면(1.5초 이내면) finish함수를 호출해서 앱을 종료시키면 됩니다.

( lastTimeBackPressed: 이전에 버튼 누른 시간 )

하지만
이 방법이 가능하려면 lastTimeBackPressed변수는 전역변수로 미리 만들어져야 있어야 됩니다.

변수를 -1500으로 초기화하면 [ currentTimeMillis() -(-1500) > 1500 ]이 되니 처음 if문은 성립될 수가 없습니다.

이 과정이 끝나면 lastTimeBackPressed 변수가 제 역할을 해서 프로그램을 종료시킬 수 있겠네요!!

Leave a Reply

Your email address will not be published. Required fields are marked *