Строгий режим в Android 2.2
У меня целевой sdk установлен как 3.2, а min sdk как 2.2, как я могу использовать строгий режим в своем приложении, как я понимаю, что он введен, но не могу понять, как начать его использовать.
6 ответов
Мое предложение состоит из двух частей:
Сначала добавьте некоторый базовый код StrictMode в приложение. onCreate()
, Это позволяет вам легко применять StrictMode ко всему вашему приложению (хотя вы можете разместить этот код где угодно для более конкретного тестирования). В документации по StrictMode есть хороший пример кода.
Во-вторых, определите версию SDK, прежде чем пытаться использовать StrictMode. Таким образом, вы используете только StrictMode в API версии 9 или выше - если вы не сделаете эту проверку, вы будете аварийно завершать работу приложения на более старых версиях Android. Вы можете легко определить версию SDK, посмотрев на Build.VERSION.SDK_INT.
При желании вы можете включить StrictMode только во время тестирования. Как вы это сделаете, решать только вам, хотя в прошлом я написал одно решение для этого.
StrictMode.ThreadPolicy
был введен с уровня API 9, а политика потоков по умолчанию была изменена с уровня API 11, который, короче говоря, не позволяет работать в сети
(например: HttpClient
а также HttpUrlConnection
) выполняется в потоке пользовательского интерфейса. Если вы сделаете это, вы получите NetworkOnMainThreadException
,
Вы можете легко решить эту ошибку двумя способами:
Рекомендуемый способ решения этой проблемы - использование
anAsyncTask
так что сетевой запрос не блокирует поток пользовательского интерфейса.Кроме того, вы можете переопределить эту политику потоков, добавив приведенный ниже код в метод onCreate() вашего основного действия.
if (android.os.Build.VERSION.SDK_INT > 9) { StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); }
Надеюсь, что это полезно для вас..
Это действительно полезно для Как использовать StrictMode в приложении? Проверьте это.. http://mobile.tutsplus.com/tutorials/android/android-sdk_strictmode/
Установите для Манифеста 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
Это помогло решить проблему, проверив уровень API и затем выполнив строгий режим.
Обратитесь к следующей ссылке о том, как его использовать. Установите его на onCreate соответствующего компонента или приложения