ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Android StrictMode
    Android 2024. 4. 4. 10:27
    반응형

    https://developer.android.com/reference/android/os/StrictMode

     

    StrictMode  |  Android Developers

     

    developer.android.com

     


    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

    반응형

    댓글

Designed by Tistory.