StrictMode Klasse

Definition

StrictMode ist ein Entwicklertool, das Dinge erkennt, die Sie möglicherweise versehentlich tun, und sie darauf aufmerksam macht, damit Sie sie beheben können.

[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
Vererbung
StrictMode
Attribute

Hinweise

StrictMode ist ein Entwicklertool, das Dinge erkennt, die Sie möglicherweise versehentlich tun, und sie darauf aufmerksam macht, damit Sie sie beheben können.

StrictMode wird am häufigsten verwendet, um versehentlichen Datenträger- oder Netzwerkzugriff auf den Standard Thread der Anwendung abzufangen, in dem UI-Vorgänge empfangen und Animationen ausgeführt werden. Wenn Datenträger- und Netzwerkvorgänge vom Standard Thread abgeschaltet werden, werden Anwendungen wesentlich reibungsloser und reaktionsfähiger. Indem Sie den Standard Thread Ihrer Anwendung reaktionsfähig halten, verhindern Sie auch, dass ANR-Dialogfelder benutzern angezeigt werden.

<p class="note">Beachten Sie, dass, obwohl sich der Datenträger eines Android-Geräts häufig im Flashspeicher befindet, auf vielen Geräten zusätzlich zu diesem Arbeitsspeicher ein Dateisystem mit sehr begrenzter Parallelität ausgeführt wird. Es ist oft der Fall, dass fast alle Datenträgerzugriffe schnell sind, aber in Einzelfällen erheblich langsamer sein können, wenn bestimmte E/A-Vorgänge aus anderen Prozessen im Hintergrund stattfinden. Wenn möglich, ist es am besten anzunehmen, dass solche Dinge nicht schnell sind.

Beispielcode, der von früh in der Methode ihrer android.app.Application, android.app.Activityoder einer anderen Anwendungskomponente aktiviert werden soll android.app.Application#onCreate :

public void onCreate() {
                StrictMode.setThreadPolicy(new {@link ThreadPolicy.Builder StrictMode.ThreadPolicy.Builder}()
                        .detectDiskReads()
                        .detectDiskWrites()
                        .detectNetwork()   // or .detectAll() for all detectable problems
                        .penaltyLog()
                        .build());
                StrictMode.setVmPolicy(new {@link VmPolicy.Builder StrictMode.VmPolicy.Builder}()
                        .detectLeakedSqlLiteObjects()
                        .detectLeakedClosableObjects()
                        .penaltyLog()
                        .penaltyDeath()
                        .build());
                super.onCreate();
            }

Sie können entscheiden, was passieren soll, wenn ein Verstoß erkannt wird. Wenn Sie beispielsweise verwendenThreadPolicy.Builder#penaltyLog, können Sie die Ausgabe von adb logcat watch, während Sie Ihre Anwendung verwenden, um die Verstöße zu sehen, während sie auftreten.

Wenn Sie Verstöße finden, die Sie als problematisch empfinden, gibt es eine Vielzahl von Tools, um sie zu lösen: Threads, android.os.Handler, android.os.AsyncTask, android.app.IntentServiceusw. Fühlen Sie sich jedoch nicht gezwungen, alles zu beheben, was StrictMode findet. Insbesondere viele Fälle des Datenträgerzugriffs sind häufig während des normalen Aktivitätslebenszyklus erforderlich. Verwenden Sie StrictMode, um dinge zu finden, die Sie versehentlich ausgeführt haben. Netzwerkanforderungen im UI-Thread stellen jedoch fast immer ein Problem dar.

<p class="note">StrictMode ist kein Sicherheitsmechanismus und wird nicht garantiert, dass alle Datenträger- oder Netzwerkzugriffe gefunden werden. Obwohl es seinen Zustand bei android.os.Binder Aufrufen über Prozessgrenzen hinweg verteilt, ist es letztendlich immer noch ein Mechanismus mit dem besten Aufwand. Insbesondere wird der Datenträger- oder Netzwerkzugriff über JNI-Aufrufe nicht notwendigerweise ausgelöst.

Java-Dokumentation für android.os.StrictMode.

Teile dieser Seite sind Änderungen, die auf Arbeiten basieren, die vom Android Open Source Project erstellt und freigegeben wurden und gemäß den In Attribution License beschriebenen Begriffen verwendet werden.

Eigenschaften

Class

Gibt die Laufzeitklasse dieses Objectzurück.

(Geerbt von Object)
Handle

Das Handle für die zugrunde liegende Android-instance.

(Geerbt von Object)
JniIdentityHashCode

StrictMode ist ein Entwicklertool, das Dinge erkennt, die Sie möglicherweise versehentlich tun, und sie darauf aufmerksam macht, damit Sie sie beheben können.

(Geerbt von Object)
JniPeerMembers

StrictMode ist ein Entwicklertool, das Dinge erkennt, die Sie möglicherweise versehentlich tun, und sie darauf aufmerksam macht, damit Sie sie beheben können.

PeerReference

StrictMode ist ein Entwicklertool, das Dinge erkennt, die Sie möglicherweise versehentlich tun, und sie darauf aufmerksam macht, damit Sie sie beheben können.

(Geerbt von Object)
ThresholdClass

Diese API unterstützt die Mono für Android-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen.

(Geerbt von Object)
ThresholdType

Diese API unterstützt die Mono für Android-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen.

(Geerbt von Object)

Methoden

AllowThreadDiskReads()

Ein bequemer Wrapper, der den aktuellen ThreadPolicy von #getThreadPolicyübernimmt, ändert ihn, um Datenträgerlesevorgänge zuzulassen, und legt die neue Richtlinie mit #setThreadPolicyfest, wodurch die alte Richtlinie zurückgegeben wird, sodass Sie sie am Ende eines Blocks wiederherstellen können.

AllowThreadDiskWrites()

Ein benutzerfreundlicher Wrapper, der den aktuellen ThreadPolicy von #getThreadPolicyübernimmt, ändert ihn so, dass beide Datenträgerlesevorgänge &und Schreibvorgänge zugelassen werden, und legt die neue Richtlinie mit #setThreadPolicyfest, wodurch die alte Richtlinie zurückgegeben wird, damit Sie sie am Ende eines Blocks wiederherstellen können.

Clone()

Erstellt und gibt eine Kopie dieses Objekts zurück.

(Geerbt von Object)
Dispose()

StrictMode ist ein Entwicklertool, das Dinge erkennt, die Sie möglicherweise versehentlich tun, und sie darauf aufmerksam macht, damit Sie sie beheben können.

(Geerbt von Object)
Dispose(Boolean)

StrictMode ist ein Entwicklertool, das Dinge erkennt, die Sie möglicherweise versehentlich tun, und sie darauf aufmerksam macht, damit Sie sie beheben können.

(Geerbt von Object)
EnableDefaults()

Aktivieren Sie die empfohlenen StrictMode-Standardwerte, wobei gerade Verstöße protokolliert werden.

Equals(Object)

Gibt an, ob ein anderes Objekt "gleich" diesem objekt ist.

(Geerbt von Object)
GetHashCode()

Gibt einen Hashcodewert für das Objekt zurück.

(Geerbt von Object)
GetThreadPolicy()

Gibt die Richtlinie des aktuellen Threads zurück.

GetVmPolicy()

Ruft die aktuelle VM-Richtlinie ab.

JavaFinalize()

Wird vom Garbage Collector für ein Objekt aufgerufen, wenn die Garbage Collection feststellt, dass keine Verweise mehr auf das Objekt vorhanden sind.

(Geerbt von Object)
NoteSlowCall(String)

Für Code zu beachten, dass es langsam ist.

Notify()

Aktiviert einen einzelnen Thread, der auf den Monitor dieses Objekts wartet.

(Geerbt von Object)
NotifyAll()

Aktiviert alle Threads, die auf den Monitor dieses Objekts warten.

(Geerbt von Object)
SetHandle(IntPtr, JniHandleOwnership)

Legt die Handle-Eigenschaft fest.

(Geerbt von Object)
SetThreadPolicy(StrictMode+ThreadPolicy)

Legt die Richtlinie fest, welche Aktionen im aktuellen Thread erkannt werden sollen, sowie die Strafe, wenn solche Aktionen auftreten.

SetVmPolicy(StrictMode+VmPolicy)

Legt die Richtlinie fest, welche Aktionen im VM-Prozess (in einem beliebigen Thread) erkannt werden sollen, sowie die Strafe, wenn solche Aktionen auftreten.

ToArray<T>()

StrictMode ist ein Entwicklertool, das Dinge erkennt, die Sie möglicherweise versehentlich tun, und sie darauf aufmerksam macht, damit Sie sie beheben können.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolgendarstellung des Objekts zurück.

(Geerbt von Object)
UnregisterFromRuntime()

StrictMode ist ein Entwicklertool, das Dinge erkennt, die Sie möglicherweise versehentlich tun, und sie darauf aufmerksam macht, damit Sie sie beheben können.

(Geerbt von Object)
Wait()

Bewirkt, dass der aktuelle Thread wartet, bis er aktiviert ist, in der Regel durch <>Benachrichtigung</em> oder <em>interrupted</em>.

(Geerbt von Object)
Wait(Int64)

Bewirkt, dass der aktuelle Thread wartet, bis er aktiviert ist, in der Regel durch>< Benachrichtigung</em> oder <em>interrupted</em>, oder bis eine bestimmte Menge an Echtzeit verstrichen ist.

(Geerbt von Object)
Wait(Int64, Int32)

Bewirkt, dass der aktuelle Thread wartet, bis er aktiviert ist, in der Regel durch>< Benachrichtigung</em> oder <em>interrupted</em>, oder bis eine bestimmte Menge an Echtzeit verstrichen ist.

(Geerbt von Object)

Explizite Schnittstellenimplementierungen

IJavaPeerable.Disposed()

StrictMode ist ein Entwicklertool, das Dinge erkennt, die Sie möglicherweise versehentlich tun, und sie darauf aufmerksam macht, damit Sie sie beheben können.

(Geerbt von Object)
IJavaPeerable.DisposeUnlessReferenced()

StrictMode ist ein Entwicklertool, das Dinge erkennt, die Sie möglicherweise versehentlich tun, und sie darauf aufmerksam macht, damit Sie sie beheben können.

(Geerbt von Object)
IJavaPeerable.Finalized()

StrictMode ist ein Entwicklertool, das Dinge erkennt, die Sie möglicherweise versehentlich tun, und sie darauf aufmerksam macht, damit Sie sie beheben können.

(Geerbt von Object)
IJavaPeerable.JniManagedPeerState

StrictMode ist ein Entwicklertool, das Dinge erkennt, die Sie möglicherweise versehentlich tun, und sie darauf aufmerksam macht, damit Sie sie beheben können.

(Geerbt von Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

StrictMode ist ein Entwicklertool, das Dinge erkennt, die Sie möglicherweise versehentlich tun, und sie darauf aufmerksam macht, damit Sie sie beheben können.

(Geerbt von Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

StrictMode ist ein Entwicklertool, das Dinge erkennt, die Sie möglicherweise versehentlich tun, und sie darauf aufmerksam macht, damit Sie sie beheben können.

(Geerbt von Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

StrictMode ist ein Entwicklertool, das Dinge erkennt, die Sie möglicherweise versehentlich tun, und sie darauf aufmerksam macht, damit Sie sie beheben können.

(Geerbt von Object)

Erweiterungsmethoden

JavaCast<TResult>(IJavaObject)

Führt eine Typkonvertierung mit Überprüfung der Android-Laufzeit aus.

JavaCast<TResult>(IJavaObject)

StrictMode ist ein Entwicklertool, das Dinge erkennt, die Sie möglicherweise versehentlich tun, und sie darauf aufmerksam macht, damit Sie sie beheben können.

GetJniTypeName(IJavaPeerable)

StrictMode ist ein Entwicklertool, das Dinge erkennt, die Sie möglicherweise versehentlich tun, und sie darauf aufmerksam macht, damit Sie sie beheben können.

Gilt für: