Android StrictMode? 그게뭔데 ?
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에 올라오는 이슈에 관해 지속적으로 모니터링중에 있다고 합니다. 다만, 해당 로그가 발생하는 부분에서는 확정적인 부분이 아니며 참고하는 용도로만 사용하는 것을 권장하고 있습니다.
-
서비스에 같이 출시하는 것은 바람직하지 않으며,개발용으로만 사용하는 것을 권장하고 있습니다.
Leave a comment