Android StrictMode 활용 가이드
Source
Evernote/Technote scraps/Android Strict Mode 활용 가이드 파란 개발자 블로그.md
Summary
Android 메인 스레드에서 발생하는 파일/네트워크 접근 및 메모리 누수를 감지하여 앱 응답 속도(ANR 방지)를 개선하는 StrictMode API 사용법입니다. ThreadPolicy(디스크/네트워크 접근 감지)와 VmPolicy(메모리 누수 감지)를 설정하고, 위반 시 로그, 다이얼로그, 강제 종료 등 페널티를 적용할 수 있습니다. 반드시 디버그 빌드에서만 활성화해야 하며, 상용 릴리스 버전에서는 제거해야 합니다. Gingerbread 이상에서 기본 지원되며, 하위 버전 호환을 위해 리플렉션을 사용할 수 있습니다.
Key Points
- StrictMode는 메인 스레드에서의 긴 작업(파일 I/O, 네트워크)과 메모리 누수를 감지하여 ANR(Application Not Responding)를 예방합니다.
- ThreadPolicy: detectDiskReads/Writes, detectNetwork 등으로 스레드 정책 위반을 감지합니다.
- VmPolicy: detectLeakedSqlLiteObjects, detectActivityLeaks 등으로 객체 누수를 감지합니다.
- Penalty 설정: penaltyLog, penaltyDialog, penaltyDeath, penaltyFlashScreen 등으로 위반 시 알림 방식을 지정합니다.
- 활성화 조건: ApplicationInfo.FLAG_DEBUGGABLE가 true일 때만 활성화하여 디버그 환경에서만 동작하도록 해야 합니다.
- 상용 버전 주의: 릴리스 빌드에는 StrictMode를 포함시키지 않아야 강제 종료 등의 문제가 발생하지 않습니다.
- 간단한 설정: StrictMode.enableDefaults() 또는 detectAll()을 사용하여 빠르게 활성화할 수 있습니다.
- 하위 버전 호환: Gingerbread 미만 버전에서 테스트 시 리플렉션을 통해 StrictMode를 호출할 수 있습니다.