ChamomileGuides 3.0.4 Help

웹 버전 체크 가이드(AOS)

구현 방식

프로젝트마다 쿠키와 캐시를 설정하는 방식이 다르기때문에, 아래 세 가지경우로 나누어서, 사용자가 캐시/쿠키 초기화를 설정 할 수 있게 하였다. (캐시와 쿠키 설정 방법은 '쿠키-공유-관리 가이드(AOS)'를 참고)

  1. 앱 구동 시

  2. 로그아웃

  3. 백그라운드에서 포그라운드로 진입하는 상황

앱 구동 시

앱 시작할때마다 남아있던 데이터들을 초기화하고 웹뷰를 로드 해야되는 경우가 있다.

  1. 웹뷰 로드 전 데이터들을 초기화 한다.
    사용자의 필요에 따라 매서드로 구분하였다. 웹뷰를 로드하기전에 다음 매서드가 실행되도록 한다.

    VersionCheckModule.clearCache(flexWebView) // 캐시 초기화 VersionCheckModule.clearCookie(flexWebView) // 쿠키 초기화 VersionCheckModule.clearWeb(flexWebView) // 캐시 & 쿠키 초기화 . . . loadUrl(url)

로그아웃

로그아웃 직후, VersionCheckModule.clearWeb(flexWebView) 호출하고, reload()를 실행해준다.

VersionCheckModule.clearCache(flexWebView) // 캐시 초기화 VersionCheckModule.clearCookie(flexWebView) // 쿠키 초기화 VersionCheckModule.clearWeb(flexWebView) // 캐시 & 쿠키 초기화 flexWebView.reload() // 웹페이지 다시 로드

백그라운드에서 포그라운드로 진입하는 상황

  1. 백그라운드에서 포그라운드로 진입하는 상황에서 특정 시간 이상동안 백그라운드에서 머무를 경우 웹 캐시를 초기화 한다. 사용자는 머무르는 시간을 파라미터로 입력한다.

  2. onPause와 onResume에 다음 코드를 입력해준다. backgroundTime은 전역변수로 선언하여, onPause와 onResume에서 사용 할 수 있도록한다.

  3. 백그라운드 상태로 진입을 하면, 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) } } } } }
file

실행 결과

  1. 초기 진입
    아래와 같이 앱을 실행하자마자 캐시와 쿠키 초기화

    file

  2. 로그아웃 상황
    아래와 같이 버튼을 클릭하면 웹 캐시 초기화

    file

  3. 백그라운드 -> 포그라운드 진입

    • 설정한 시간이 지나지않아서 초기화가 안 되는 경우
      백그라운드에 머무른 시간이 3초로 현재 설정한 시간 10초보다 짧으므로, 웹 캐시 초기화가 안 되었다.

      file

    • 설정한 시간이 지나서 웹 캐시가 초기화 되는 경우
      백그라운드에 머무른 시간이 13초로 현재 설정한 시간 10초보다 길기때문에, 웹 캐시 초기화가 되었다.

      file

Last modified: 21 4월 2025