개발 요청 사항
: 백그라운드에 1시간 이상 있다가 앱 재실행시 메인 액티비티로 돌아가게끔 해주세요!!!!!
ㅡㅜㅡ
액티비티의 생명주기를 생각 했을때 앱이 Background 넘어가게되면 onPause
완전히 종료하는게 아니라 잠시 백그라운드로 둔 상태의 경우를 말한다.
앱을 재 실행해서 Foreground 로 돌아오는 경우 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시간
이렇게 변환하여서 사용하면 끝!
조건문 사이에는 원하는 동작을 띄워놓을 수 있음
스플래시 화면을 띄운다던가, 특정 액티비티로 이동한다던가, 토스트메시지나 알럿창을 띄운다던가 등등
'안드로이드 개발일지' 카테고리의 다른 글
[kotlin/안드로이드] 다이얼로그 전체화면으로 만들기 (0) | 2023.02.27 |
---|---|
[kotlin/안드로이드] 코틀린 웹뷰 완전 기본 세팅 네이버띄우기 연습 (0) | 2023.01.03 |
안드로이드 개발에 필수조건 생명주기 수명주기 (0) | 2023.01.03 |
댓글