(kotlin/android) 백그라운드 및 백그라운드에서 시간 계산 System.currentTimeMillis 초/분/시간 단위로 시간 계산

개발 요구 사항

: 1시간 이상 백그라운드에 있다가 앱이 다시 시작되면 메인 액티비티로 돌아갑니다!
!
!
!
!

ㅡㅡㅡ

Activity의 수명 주기를 고려하여 onPause는 애플리케이션이 백그라운드로 진입할 때 사용됩니다.

앱을 다시 시작하고 포그라운드로 돌아오면 onResume으로 돌아갑니다.

개념적으로 onPause가 실행될 때 현재 시간을 저장합니다.

onResume으로 돌아가면 현재 시간과 저장 시간의 차이로 시간이 계산됩니다!

전체 코드

override fun onPause() {
    super.onPause()
    backgroundTime = System.currentTimeMillis() // 백그라운드로 이동 당시 현재 시간 저장
}

override fun onResume() {
    super.onResume()
    val foregroundTime = System.currentTimeMillis() - backgroundTime // 백그라운드에 머무른 시간 계산
    val foregroundTimeInSeconds = foregroundTime / 1000

    if(backgroundTime > 0 && foregroundTimeInSeconds>5) { // 테스트용으로 5초 설정
        val intent = Intent(this, MainActivity::class.java) // 커스텀
        intent.putExtra("url", Global.BASE_URL)			// 나는웹뷰라서 메인페이지 URL 띄움
        startActivity(intent)
    }
}

–> System.currentTimeMillis()의 단위는 밀리초입니다!

로그를 찍으면 어떤 이상한 숫자가 나올까.

System.currentTimeMillis() = 1000 = 1초

그래서 /1000 단위를 초 단위로 계산해봤습니다!
!
!
!

백그라운드 시간의 값은 최초 실행 시 0이므로 0보다 큰 조건을 넣어 구현한다.

System.currentTimeMillis / 1000 = 1초

System.currentTimeMillis / 1000 * 60 = 1분

System.currentTimeMillis / 1000 * 60 * 60 = 1시간

이렇게 변환해서 사용하세요!