-
Android StrictModeAndroid 2024. 4. 4. 10:27반응형
https://developer.android.com/reference/android/os/StrictMode
StrictMode는 안드로이드에서 개발자에게 앱의 성능과 안정성을 개선하기 위한 도구를 제공합니다. 주로 디버깅 및 테스트 목적으로 사용되며, 다음과 같은 목적으로 사용될 수 있습니다:
네트워크와 디스크 작업 감시: StrictMode는 메인 스레드에서 네트워크 요청이나 디스크 I/O 작업을 감지하여 이러한 작업을 백그라운드 스레드에서 수행하도록 권장합니다. 메인 스레드에서 이러한 작업을 수행하면 앱의 응답성이 떨어지고 ANR(Application Not Responding)이 발생할 수 있습니다.
메모리 누수 감지: StrictMode는 메모리 누수를 감지하여 개발자가 누수를 식별하고 수정할 수 있도록 도와줍니다. 예를 들어, 액티비티나 컨텍스트를 올바르게 해제하지 않은 경우에 누수를 감지할 수 있습니다.
데이터베이스 및 Cursor 사용 감시: 데이터베이스와 Cursor를 사용하는 과정에서 메인 스레드에서 실행되는 부분을 식별하여 백그라운드 스레드에서 처리하도록 유도합니다. 메인 스레드에서 데이터베이스 작업을 하면 UI가 끊기는 현상이 발생할 수 있습니다.
임계 영역 감시: 스레드에서 임계 영역에 접근하는 부분을 식별하여 스레드 간 경쟁이나 데드락과 같은 문제를 방지할 수 있습니다.
StrictMode는 개발 중에만 사용하고 릴리스 버전에서는 비활성화하는 것이 일반적입니다. 이는 StrictMode가 성능에 영향을 미칠 수 있으며, 실제 사용자에게는 필요하지 않은 정보를 표시할 수 있기 때문입니다. 개발 중에는 StrictMode를 사용하여 잠재적인 문제를 조기에 발견하고 수정하여 안정적이고 성능이 좋은 안드로이드 앱을 개발할 수 있습니다.ex>
class SampleApp : Application() { … override fun onCreate() { StrictMode.ThreadPolicy.Builder() .detectCustomSlowCalls() .detectDiskReads() .detectDiskWrites() .detectNetwork() .detectResourceMismatches() .penaltyLog() .build() StrictMode.VmPolicy.Builder() .detectLeakedSqlLiteObjects() .detectLeakedClosableObjects() .detectActivityLeaks() .penaltyLog() .build() super.onCreate() … } … }
logcat 에서 찍힌 log
반응형'Android' 카테고리의 다른 글
Process 'command 'git'' finished with non-zero exit value 69 (1) 2024.11.21 Jetpack Compose Internals 한국어 번역 (0) 2024.02.17 2023년 4월 정책 업데이트 Google play 정책 세미나 (0) 2023.04.26 Clean Architecture in Android (0) 2023.01.30 Modern Android App Architecture (0) 2022.12.11 Android studio/InteliJ IDEA Code inspections (0) 2022.09.08 Jetpack Compose Modifier.onFocusChanged에서 animateScrollTo 가 작동안되는 문제 (0) 2022.04.07 Null Coalescing Operator(with. databinding) (0) 2022.01.05