StrictMode クラス

定義

StrictMode は、誤って行っている可能性のあることを検出し、修正できるように注意を引く開発者ツールです。

[Android.Runtime.Register("android/os/StrictMode", DoNotGenerateAcw=true)]
public sealed class StrictMode : Java.Lang.Object
[<Android.Runtime.Register("android/os/StrictMode", DoNotGenerateAcw=true)>]
type StrictMode = class
    inherit Object
継承
StrictMode
属性

注釈

StrictMode は、誤って行っている可能性のあることを検出し、修正できるように注意を引く開発者ツールです。

StrictMode は、UI 操作が受信され、アニメーションが実行されるアプリケーションのメイン スレッドで、偶発的なディスクまたはネットワーク アクセスをキャッチするために最も一般的に使用されます。 ディスク操作とネットワーク操作をメイン スレッドから切り離しておくと、アプリケーションの応答性が大幅に向上します。 アプリケーションのメイン スレッドの応答性を維持することで、 ANR ダイアログ がユーザーに表示されないようにすることもできます。

Android デバイスのディスクは多くの場合、フラッシュ メモリ上にありますが、多くのデバイスでは、コンカレンシーが非常に制限されたそのメモリ上でファイルシステムが実行されることに注意してください。 多くの場合、ほぼすべてのディスク アクセスが高速ですが、特定の I/O が他のプロセスからバックグラウンドで発生すると、個々のケースで大幅に遅くなる場合があります。 可能であれば、そのようなことが速くないと仮定することをお勧めします。

android.app.Applicationandroid.app.Activity、またはその他のアプリケーション コンポーネントの android.app.Application#onCreate メソッドの初期から有効にするコード例:

override fun onCreate(savedInstanceState: Bundle?) {
                super.onCreate(savedInstanceState)
                StrictMode.setThreadPolicy(
                    StrictMode.ThreadPolicy.Builder()
                    .detectAll()
                    .build()
                )
                StrictMode.setVmPolicy(
                    StrictMode.VmPolicy.Builder()
                    .detectAll()
                    .build()
                )
            }

違反が検出された場合の対処方法を決定できます。 たとえば、 ThreadPolicy.Builder#penaltyLog を使用すると、アプリケーションを使用して違反が発生した場合に、 adb logcat の出力を確認できます。

問題があると感じる違反が見つかると、スレッド、 android.os.Handlerandroid.os.AsyncTaskandroid.app.IntentServiceなど、さまざまなツールを使用して解決できます。しかし、StrictModeが見つけたすべてのものを修正せざるを得ないと感じないでください。 特に、ディスク アクセスの多くのケースは、通常のアクティビティ ライフサイクル中に必要になることが多いです。 StrictMode を使用して、誤って行ったことを見つけます。 ただし、UI スレッドでのネットワーク要求は、ほとんどの場合問題です。

StrictMode はセキュリティ メカニズムではなく、すべてのディスクまたはネットワーク アクセスを検索する保証はありません。 android.os.Binder呼び出しを実行すると、プロセスの境界を越えて状態が伝達されますが、最終的にはベスト エフォート メカニズムです。 特に、JNI 呼び出しからのディスクまたはネットワーク アクセスによって必ずしもトリガーされるとは限りません。

Javaドキュメント。

このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。

プロパティ

名前 説明
Class

この Objectのランタイム クラスを返します。

(継承元 Object)
Handle

基になる Android インスタンスへのハンドル。

(継承元 Object)
JniIdentityHashCode

相互運用ランタイムによってこのJava ピアに割り当てられた ID ハッシュ コードを取得します。

(継承元 Object)
JniPeerMembers

この型の JNI ピア メンバー メタデータを提供します。

PeerReference

このJava ピアの JNI オブジェクト参照を取得します。

(継承元 Object)
ThresholdClass

この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。

(継承元 Object)
ThresholdType

この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。

(継承元 Object)

メソッド

名前 説明
AllowThreadDiskReads()

現在の ThreadPolicy#getThreadPolicyから受け取り、ディスクの読み取りを許可するように変更し、新しいポリシーを #setThreadPolicyに設定して、ブロックの最後に復元できるように古いポリシーを返す便利なラッパー。

AllowThreadDiskWrites()

現在の ThreadPolicy#getThreadPolicyから取得し、ディスクの読み取りと書き込みの両方を許可するように変更し、新しいポリシーを #setThreadPolicyに設定して、ブロックの最後に復元できるように古いポリシーを返す便利なラッパーです。

Clone()

このオブジェクトのコピーを作成して返します。

(継承元 Object)
Dispose()

このJava ピアによって保持されているリソースを解放します。

(継承元 Object)
Dispose(Boolean)

このJava ピアによって保持されているリソースを解放します。

(継承元 Object)
EnableDefaults()

推奨される StrictMode の既定値を有効にします。違反はログに記録されます。

Equals(Object)

他のオブジェクトがこのオブジェクトと "等しい" かどうかを示します。

(継承元 Object)
GetHashCode()

オブジェクトのハッシュ コード値を返します。

(継承元 Object)
GetThreadPolicy()

現在のスレッドのポリシーを返します。

GetVmPolicy()

現在の VM ポリシーを取得します。

JavaFinalize()

オブジェクトへの参照がなくなったとガベージ コレクションによって判断されたときに、オブジェクトのガベージ コレクターによって呼び出されます。

(継承元 Object)
NoteSlowCall(String)

コードが遅いことに注意してください。

Notify()

このオブジェクトのモニターで待機している 1 つのスレッドを起動します。

(継承元 Object)
NotifyAll()

このオブジェクトのモニターで待機しているすべてのスレッドを起動します。

(継承元 Object)
SetHandle(IntPtr, JniHandleOwnership)

Handle プロパティを設定します。

(継承元 Object)
SetThreadPolicy(StrictMode+ThreadPolicy)

現在のスレッドで検出する必要があるアクションのポリシーと、そのようなアクションが発生した場合のペナルティを設定します。

SetVmPolicy(StrictMode+VmPolicy)

VM プロセス (任意のスレッド) で検出する必要があるアクションと、そのようなアクションが発生した場合のペナルティに対するポリシーを設定します。

ToArray<T>()

このJava配列ラッパーからマネージド配列を作成します。

(継承元 Object)
ToString()

オブジェクトの文字列表現を返します。

(継承元 Object)
UnregisterFromRuntime()

相互運用ランタイムからこのJava ピアの登録を解除します。

(継承元 Object)
Wait()

現在のスレッドが起動するまで待機します。通常は、 <em>notified</em> または <em>interrupted</em>。

(継承元 Object)
Wait(Int64, Int32)

現在のスレッドは、通常、 <em>notified</em> または <em>interrupted</em>、または一定のリアルタイムが経過するまで、起動されるまで待機します。

(継承元 Object)
Wait(Int64)

現在のスレッドは、通常、 <em>notified</em> または <em>interrupted</em>、または一定のリアルタイムが経過するまで、起動されるまで待機します。

(継承元 Object)

明示的なインターフェイスの実装

名前 説明
IJavaPeerable.Disposed()

このマネージド ピアが破棄されたことを相互運用ランタイムに通知します。

(継承元 Object)
IJavaPeerable.DisposeUnlessReferenced()

別のマネージド参照によって保持されない限り、このJavaピアを解放します。

(継承元 Object)
IJavaPeerable.Finalized()

このマネージド ピアが終了したことを相互運用ランタイムに通知します。

(継承元 Object)
IJavaPeerable.JniManagedPeerState

このマネージド ピアとその JNI 参照の間の関係を記述する状態を取得します。

(継承元 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

このJava ピアの相互運用 ID ハッシュ コードを設定します。

(継承元 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

このJava ピアのマネージド ピアと JNI ピアの状態を設定します。

(継承元 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

このマネージド ピアで使用される JNI オブジェクト参照を設定します。

(継承元 Object)

拡張メソッド

名前 説明
GetJniTypeName(IJavaPeerable)

インスタンス selfの型の JNI 名を取得します。

JavaAs<TResult>(IJavaPeerable)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

JavaCast<TResult>(IJavaObject)

Android ランタイムチェック型変換を実行します。

JavaCast<TResult>(IJavaObject)

StrictMode は、誤って行っている可能性のあることを検出し、修正できるように注意を引く開発者ツールです。

TryJavaCast<TResult>(IJavaPeerable, TResult)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

適用対象