Строгий режим в Android 2.2

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

Ответ 1

Мое предложение два раза:

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

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

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

Ответ 2

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

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

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

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

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

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

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

Ответ 3

Установите 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); 

}

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

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

Ответ 5

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

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

Ответ 6

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