3

I have target sdk set as 3.2 and min sdk as 2.2, how can I use strictmode in my application, as I understand it is introduced but cannot really understand how to start using it.

4

6 に答える 6

19

StrictMode.ThreadPolicyは API レベル 9 以降に導入され、デフォルトのスレッド ポリシーは API レベル 11 以降に変更されました。つまり、ネットワーク操作は許可されません。

(例: HttpClientand HttpUrlConnection) UI スレッドで実行されます。これを行うと、 が得られNetworkOnMainThreadExceptionます。

このエラーは、次の 2 つの方法で簡単に解決できます。

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

これがお役に立てば幸いです..

于 2013-08-20T12:26:43.470 に答える
8

私の提案は 2 つあります。

最初に、ベースラインのStrictMode コードApplicationのに追加しますonCreate()。これにより、アプリ全体に StrictMode を簡単に適用できます (ただし、このコードは、より具体的なテストのために任意の場所に置くことができます)。StrictMode のドキュメントに良いサンプル コードがあります。

次に、StrictMode を使用する前に SDK のバージョンを検出します。この方法では、API バージョン 9 以降でのみ StrictMode を使用します。このチェックを行わないと、古いバージョンの Android でアプリがクラッシュします。Build.VERSION.SDK_INTを見ると、SDK のバージョンを簡単に検出できます。

必要に応じて、テスト時に StrictMode のみを有効にすることもできます。これをどのように行うかはあなた次第ですが、私は過去にこれに対する1つの解決策を書きました.

于 2011-11-24T14:49:05.107 に答える
2

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 以降の場合に有効になります。

于 2012-09-04T13:27:45.343 に答える
2

これは、アプリで StrictMode を使用する方法に非常に役立ちますか? これを確認してください.. http://mobile.tutsplus.com/tutorials/android/android-sdk_strictmode/

于 2013-04-09T05:03:52.873 に答える
0

APIレベルを確認してから厳格モードを実行することで、問題の解決に役立ちました。

于 2012-11-05T10:33:44.557 に答える
0

使い方は以下のリンクを参照してください。関連するコンポーネントまたはアプリケーションの onCreate に設定します

厳格モード

于 2011-11-24T14:48:21.473 に答える