본문 바로가기
Program Language/Android

Android StrictMode? 그게뭔데 ?

by KangJinHo 2022. 8. 9.

1. 개요

Android 앱을 개발할 때, 사용자를 위해 다양한 요소를 고려해야합니다. 그 중 UI에 관해서 장시간이 걸리게 되면 사용자는 앱을 이탈하는 경우가 생깁니다. 과부화가 걸리는 부분을 찾아주는 강력한 기능이지만, 잘 모르고 있는 StrictMode에 대해 안내해드리겠습니다. 👀

2. 코드

AppliCation, Activity onCreate()에 아래와 같이 작성하면 기능을 실행시킬 수 있습니다. 빌더패턴으로 구성되어 있으며, 필요한 부분에 따라 선택적으로 구현을 할 수 있습니다.

기본 API로 제공하고 있으므로, 별도로 추가하지 않아도 사용이 가능합니다.

선택감시

 /* Thread 선택 감시 */
    StrictMode.setThreadPolicy(
        StrictMode.ThreadPolicy.Builder()
            .detectCustomSlowCalls()
            .detectDiskReads()
            .detectDiskWrites()
            .detectNetwork()
            .detectResourceMismatches()
            .detectUnbufferedIo()
            .penaltyDeath()
            .penaltyDeathOnNetwork()
            .penaltyDialog()
            .penaltyDropBox()
            .penaltyFlashScreen()
            .paentlyLog()
            .build()
    )
    /*  Virtual Machine 선택 감시 */
    StrictMode.setVmPolicy(
        StrictMode.VmPolicy.Builder()
            .detectActivityLeaks()
            .detectCleartextNetwork()
            .detectContentUriWithoutPermission()
            .detectCredentialProtectedWhileLocked()
            .detectFileUriExposure()
            .detectImplicitDirectBoot()
            .detectLeakedClosableObjects()
            .detectLeakedRegistrationObjects()
            .detectLeakedSqlLiteObjects()
            .detectNonSdkApiUsage()
            .detectUntaggedSockets()
            .penaltyDeath()
            .penaltyDeathOnCleartextNetwork()
            .penaltyDeathOnFileUriExposure()
            .penaltyDropBox()
            .penaltyLog()
            .build()
    )

간소화

 /* Thread 감시 */
    StrictMode.setThreadPolicy(
        StrictMode.ThreadPolicy.Builder()
            .detectAll()
            .paentlyLog()
            .build()
    )

    /*  Virtual Machine 감시 */
    StrictMode.setVmPolicy(
        StrictMode.VmPolicy.Builder()
            .detectAll()
            .penaltyLog()
            .build()
    )
  1. 결론
    현재 구글에서 제공중인 API이며 StackOverFlow에 올라오는 이슈에 관해 지속적으로 모니터링중에 있다고 합니다. 다만, 해당 로그가 발생하는 부분에서는 확정적인 부분이 아니며 참고하는 용도로만 사용하는 것을 권장하고 있습니다.

서비스에 같이 출시하는 것은 바람직하지 않으며,개발용으로만 사용하는 것을 권장하고 있습니다.

  1. 참고자료

'Program Language > Android' 카테고리의 다른 글

Crashlytics + Timber?  (0) 2022.08.11
[android] Androidx 사용법  (0) 2018.12.30
[Kotlin] 코틀린! data 클래스  (0) 2018.08.03
[Kotlin] 코틀린만의 접근지정자! internal  (0) 2018.08.02
[Kotlin] 코틀린이란?  (0) 2018.07.31

댓글