2011-11-24 3 views
2

타겟 sdk를 3.2로 설정하고 최소 sdk를 2.2로 설정 했으므로 내 응용 프로그램에서 strictmode를 어떻게 사용할 수 있습니까?이 기능이 도입되었지만 사용 방법을 실제로 이해할 수는 없으므로 어떻게 사용할 수 있습니까?안드로이드의 엄격 모드 2.2

답변

7

나의 제안은 두 가지입니다 :

첫째, 당신의 ApplicationonCreate() 몇 가지 기준 StrictMode code를 추가합니다. 이를 통해 StrictMode를 쉬운 방식으로 전체 앱에 적용 할 수 있습니다 (더 구체적인 테스트를 위해이 코드를 임의의 위치에 둘 수도 있음). StrictMode 문서에는 좋은 샘플 코드가 있습니다.

둘째, StrictMode를 사용하기 전에 SDK 버전을 검색하십시오. 이렇게하면 API 버전 9 이상에서만 StrictMode를 사용합니다.이 확인을 수행하지 않으면 이전 버전의 Android에서 앱이 다운됩니다. Build.VERSION.SDK_INT을 보면 SDK 버전을 쉽게 감지 할 수 있습니다.

선택적으로 테스트 할 때 StrictMode 만 사용하도록 설정할 수 있습니다. 당신이하는 일은 비록 당신에게 달려 있지만, I've written up one solution for this in the past입니다.

0

사용 방법은 다음 링크를 참조하십시오. 관련 구성 요소의에서 onCreate에 설정을 위 또는 응용 프로그램

Strict Mode

2

Android Manifest를 다음과 같이 설정하십시오.

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16" android:maxSdkVersion="16"/> 

onCreate 메서드에서 아래 코드를 사용하십시오.

int SDK_INT = android.os.Build.VERSION.SDK_INT; 

if (SDK_INT>8){ 

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 

StrictMode.setThreadPolicy(policy); 

} 

참고 :이 코드를 사용할 안드로이드 버전을 이미 확인하고 있으므로 경고를 비활성화하십시오. 안드로이드 버전은 그것은 엄격 모드를 실행 한 후 API 레벨을 확인하여 문제를 해결하고에 도움이 안드로이드 2.2

+0

그것이 detectAll 있어야하지 않나요 .. 당신에게 도움이된다? 죄송합니다. 공식 Android 설명서는 평소와 같이 흐릿합니다. – Radu

0

보다 높은 경우

이 코드가 활성화됩니다.

2

이것은 StrictMode를 응용 프로그램에서 사용하는 데 정말로 도움이됩니까? HttpClient :이 옵션을 선택합니다 .. http://mobile.tutsplus.com/tutorials/android/android-sdk_strictmode/

+0

링크가 작동하지 않습니다. – zyamys

+0

이 링크를 사용하십시오 ** http : //code.tutsplus.com/tutorials/android-sdk_strictmode--mobile-7581** 도움이 될 것입니다 –

15

StrictMode.ThreadPolicy을 API 레벨 9와 기본 스레드 정책은 한마디로, 네트워크 운영

(예를 허용하지 않는 API 레벨 11 이후에 바뀐했기 때문에 도입 및 HttpUrlConnection) UI 스레드에서 실행됩니다. 이렇게하면 NetworkOnMainThreadException이됩니다. 이 문제를 해결

  1. 권장되는 방법 네트워크 요청이 UI 스레드를 차단하지 않습니다 anAsyncTask 그래서 를 사용하는 것입니다 : -

    당신은 쉽게 두 가지 방법으로이 오류를 해결할 수 있습니다.

  2. 또는 주 활동의 onCreate() 메소드에 아래 코드 을 추가하여이 스레드 정책을 무시할 수 있습니다.

if (android.os.Build.VERSION.SDK_INT > 9) { 
    StrictMode.ThreadPolicy policy = 
    new StrictMode.ThreadPolicy.Builder().permitAll().build();  
     StrictMode.setThreadPolicy(policy); 
} 

희망이

+0

Merry Xmas! 엄격 모드에 대해 배우는 것은 마침내 그 오류에 대한 조명을 밝힙니다! 비동기적인 것을 배우는 시간! :) – Starwave

관련 문제