Строгий режим в Android 2.2 - PullRequest
2 голосов
/ 24 ноября 2011

У меня целевой sdk установлен как 3.2, а min sdk как 2.2, как я могу использовать строгий режим в моем приложении, как я понимаю, что он введен, но не могу понять, как его начать.

Ответы [ 6 ]

18 голосов
/ 20 августа 2013

StrictMode.ThreadPolicy было введено с уровня API 9, а политика потоков по умолчанию была изменена с уровня API 11, который, короче говоря, не позволяет работать в сети

(например: HttpClient и HttpUrlConnection) выполняются в потоке пользовательского интерфейса. Если вы сделаете это, вы получите NetworkOnMainThreadException.

Вы можете легко устранить эту ошибку двумя способами: -

  1. Рекомендованным способом решения этой проблемы является использование anAsyncTask, поэтому что сетевой запрос не блокирует поток пользовательского интерфейса.

  2. Кроме того, вы можете переопределить эту политику потоков, добавив код ниже в методе onCreate () вашего основного действия.

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

Надеюсь, это полезно для вас ..

8 голосов
/ 24 ноября 2011

Мое предложение двоякое:

Сначала добавьте базовый код StrictMode в ваше Приложение * onCreate(). Это позволяет вам легко применять StrictMode ко всему вашему приложению (хотя вы можете разместить этот код где угодно для более специфического тестирования). В документации по StrictMode есть хороший пример кода.

Во-вторых, определите версию SDK, прежде чем пытаться использовать StrictMode. Таким образом, вы используете только StrictMode в API версии 9 или выше - если вы не сделаете эту проверку, вы будете аварийно завершать работу приложения на более старых версиях Android. Вы можете легко определить версию SDK, посмотрев Build.VERSION.SDK_INT .

При желании вы можете включить StrictMode только во время тестирования. Как вы это сделаете, зависит только от вас, хотя Я написал одно решение для этого в прошлом .

2 голосов
/ 09 апреля 2013

Это действительно полезно, как использовать StrictMode в приложении? Проверь это.. http://mobile.tutsplus.com/tutorials/android/android-sdk_strictmode/

2 голосов
/ 04 сентября 2012

Установите для Манифеста Android что-то вроде этого.

<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); 

}

Примечание. Отключите предупреждение, поскольку вы уже проверяете, какая версия Android будет использовать этот код.

Этот код будет активирован, если версия Android выше, чем Android 2.2

0 голосов
/ 05 ноября 2012

Это помогло решить проблему, проверив уровень API и затем выполнив строгий режим.

0 голосов
/ 24 ноября 2011

Обратитесь к следующей ссылке, чтобы узнать, как его использовать.Установите его на onCreate соответствующего компонента или приложения

Строгий режим

...