Android StrictMode? 그게뭔데 ?

less than 1 minute read

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()
    )

3. 결론

  • 현재 구글에서 제공중인 API이며 StackOverFlow에 올라오는 이슈에 관해 지속적으로 모니터링중에 있다고 합니다. 다만, 해당 로그가 발생하는 부분에서는 확정적인 부분이 아니며 참고하는 용도로만 사용하는 것을 권장하고 있습니다.

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

4. 참고자료

Updated:

Leave a comment