로그아웃 직후, VersionCheckModule.clearWeb(flexWebView) 호출하고, reload()를 실행해준다.
VersionCheckModule.clearCache(flexWebView) // 캐시 초기화
VersionCheckModule.clearCookie(flexWebView) // 쿠키 초기화
VersionCheckModule.clearWeb(flexWebView) // 캐시 & 쿠키 초기화
flexWebView.reload() // 웹페이지 다시 로드
백그라운드에서 포그라운드로 진입하는 상황
백그라운드에서 포그라운드로 진입하는 상황에서 특정 시간 이상동안 백그라운드에서 머무를 경우 웹 캐시를 초기화 한다. 사용자는 머무르는 시간을 파라미터로 입력한다.
onPause와 onResume에 다음 코드를 입력해준다. backgroundTime은 전역변수로 선언하여, onPause와 onResume에서 사용 할 수 있도록한다.
백그라운드 상태로 진입을 하면, onPause에 진입하여 backgroundTime에 현재시간을 기록하고, 포그라운드 상태로 진입하면 onResume에서 backgroundClearCache(time) 매서드를 실행하여, 현재시간 - 백그라운드 진입시간을 계산하여 백그라운드에 머무른 시간을 계산한다.
class MainActivity : AppCompatActivity() {
override fun onPause() {
super.onPause()
VersionCheckModule.backgroundTime = System.currentTimeMillis() // 백그라운드 이동 당시 현재 시간
Log.d(VersionCheckModule.BACKGROUND_TAG, "onPause(1) // 백그라운드 진입 시간: ${VersionCheckModule.backgroundTime}")
}
override fun onResume() {
super.onResume()
val time = 10 // 시간 설정
VersionCheckModule.backgroundClearCache(time,VersionCheckModule.backgroundTime) // 특정 시간 이상 백그라운드에 머무르는 시간이 경과하면 웹 캐시 초기화
}
}
object VersionCheckModule {
var backgroundTime: Long = 0L
/** 백그라운드 -> 포그라운드 머무르는 시간에 따른 웹 캐시 초기화 */
fun backgroundClearCache(time : Int, backgroundTime : Long) {
Log.d(BACKGROUND_TAG,"backgroundClearCache(1) // 현재 시간: ${System.currentTimeMillis()}")
val foregroundTime = System.currentTimeMillis() - backgroundTime // 백그라운드에 머무른 시간 계산
val foregroundTimeInSeconds = Math.round(foregroundTime / 1000.0).toInt() // m/s -> s 단위 변환 및 반올림
Log.d(BACKGROUND_TAG, "backgroundClearCache(2) // 백그라운드에서 머무른 시간: $foregroundTimeInSeconds")
if(backgroundTime > 0 && foregroundTimeInSeconds > time) {
Log.d(BACKGROUND_TAG,"backgroundClearCache(3) // 타이머 ${time}초 이상")
CoroutineScope(Dispatchers.Main).launch {
val osType = App.INSTANCE.getString(R.string.os_type)
val appId = App.INSTANCE.getString(R.string.app_id)
Log.d(VERSION_API_TAG, "backgroundClearCache(1) // osType : $osType, appId : $appId")
if (osType != null && appId != null) {
Log.d(VERSION_API_TAG, "backgroundClearCache(2)")
checkWebVersion(osType,appId)
}
}
}
}
}
실행 결과
초기 진입 아래와 같이 앱을 실행하자마자 캐시와 쿠키 초기화
로그아웃 상황 아래와 같이 버튼을 클릭하면 웹 캐시 초기화
백그라운드 -> 포그라운드 진입
설정한 시간이 지나지않아서 초기화가 안 되는 경우 백그라운드에 머무른 시간이 3초로 현재 설정한 시간 10초보다 짧으므로, 웹 캐시 초기화가 안 되었다.
설정한 시간이 지나서 웹 캐시가 초기화 되는 경우 백그라운드에 머무른 시간이 13초로 현재 설정한 시간 10초보다 길기때문에, 웹 캐시 초기화가 되었다.