개발 요구 사항
: 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시간
이렇게 변환해서 사용하세요!