android 2.2中的严格模式

Vai*_*hra 2 android android-strictmode

我的目标sdk设置为3.2,min sdk设置为2.2,我如何在我的应用程序中使用strictmode,因为据我所知它已经介绍但无法真正理解如何开始使用它.

小智 18

StrictMode.ThreadPolicy 自API级别9开始引入,并且自API级别11以来默认的线程策略已更改,简而言之,不允许网络操作

(例如:HttpClientHttpUrlConnection)在UI线程上执行.如果你这样做,你得到NetworkOnMainThreadException.

您可以通过两种方式轻松解决此错误: -

  1. 解决此问题的推荐方法是使用,anAsyncTask以便网络请求不会阻止UI线程.

  2. 或者,您可以通过将以下代码添加到主活动的onCreate()方法中来覆盖此线程策略.

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

希望这对你有所帮助..


Dan*_*Lew 8

我的建议是双重的:

首先,添加一些基线StrictMode代码到你的应用程序onCreate().这使您可以轻松地将StrictMode应用于整个应用程序(尽管您可以将此代码放在任何位置以进行更具体的测试).StrictMode文档中有很好的示例代码.

其次,在尝试使用StrictMode之前检测SDK的版本.这样,您只能在API 9或更高版本中使用StrictMode - 如果您不进行此项检查,则会在较旧版本的Android上崩溃您的应用.您可以通过查看Build.VERSION.SDK_INT轻松检测SDK版本.

(可选)您可能只想在测试时启用StrictMode.你如何做到这一点取决于你,尽管我过去曾为此写过一个解决方案.