StrictMode Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
StrictMode ist ein Entwicklertool, das Dinge erkennt, die Sie möglicherweise versehentlich ausführen, und bringt sie auf Ihre Aufmerksamkeit, 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
- Attribute
Hinweise
StrictMode ist ein Entwicklertool, das Dinge erkennt, die Sie möglicherweise versehentlich ausführen, und bringt sie auf Ihre Aufmerksamkeit, damit Sie sie beheben können.
StrictMode wird am häufigsten verwendet, um versehentlichen Datenträger- oder Netzwerkzugriff im Hauptthread der Anwendung abzufangen, in dem UI-Vorgänge empfangen und Animationen ausgeführt werden. Das Beibehalten von Datenträger- und Netzwerkvorgängen außerhalb des Hauptthreads sorgt für viel reibungslosere, reaktionsfähigere Anwendungen. Indem Sie den Hauptthread Ihrer Anwendung reaktionsfähig halten, verhindern Sie auch, dass ANR-Dialogfelder benutzern angezeigt werden.
Beachten Sie, dass viele Geräte über dem Speicher eines Android-Geräts ein Dateisystem mit sehr eingeschränkter Parallelität ausführen. Es ist oft der Fall, dass fast alle Datenträgerzugriffe schnell sind, aber in einzelnen Fällen dramatisch langsamer sein kann, wenn bestimmte E/A im Hintergrund von anderen Prozessen ausgeführt werden. Wenn möglich, sollten Sie davon ausgehen, dass solche Dinge nicht schnell sind.
Beispielcode, der von anfang an in der Methode der android.app.Applicationandroid.app.ActivityAnwendungskomponente android.app.Application#onCreate aktiviert werden soll:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
StrictMode.setThreadPolicy(
StrictMode.ThreadPolicy.Builder()
.detectAll()
.build()
)
StrictMode.setVmPolicy(
StrictMode.VmPolicy.Builder()
.detectAll()
.build()
)
}
Sie können entscheiden, was passieren soll, wenn eine Verletzung erkannt wird. Beispielsweise ThreadPolicy.Builder#penaltyLog können Sie die Ausgabe adb logcat der Anwendung beobachten, während Sie Ihre Anwendung verwenden, um die Verletzungen zu sehen, während sie geschehen.
Wenn Sie Verletzungen finden, die Sie problematisch fühlen, gibt es eine Vielzahl von Tools, die ihnen helfen können: Threads, android.os.Handler, , android.os.AsyncTask, android.app.IntentServiceusw. Fühlen Sie sich jedoch nicht gezwungen, alles zu beheben, was StrictMode findet. Insbesondere sind viele Fälle des Datenträgerzugriffs häufig während des normalen Aktivitätslebenszyklus erforderlich. Verwenden Sie StrictMode, um dinge zu finden, die Sie versehentlich getan haben. Netzwerkanforderungen im UI-Thread sind jedoch fast immer ein Problem.
StrictMode ist kein Sicherheitsmechanismus und ist nicht garantiert, dass alle Datenträger- oder Netzwerkzugriffe gefunden werden. Obwohl er den Status bei android.os.Binder Aufrufen über Prozessgrenzen hinweg verteilt, ist er letztendlich immer noch ein Best-Effort-Mechanismus. Insbesondere wird der Datenträger- oder Netzwerkzugriff von JNI-Aufrufen nicht unbedingt ausgelöst.
Java-Dokumentation für android.os.StrictMode.
Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die vom Android Open Source-Projekt erstellt und freigegeben werden und gemäß den in der Creative Commons 2.5 Attribution License beschriebenen Begriffen verwendet werden.
Eigenschaften
| Name | Beschreibung |
|---|---|
| Class |
Gibt die Laufzeitklasse dieses Werts |
| Handle |
Das Handle für die zugrunde liegende Android-Instanz. (Geerbt von Object) |
| JniIdentityHashCode |
StrictMode ist ein Entwicklertool, das Dinge erkennt, die Sie möglicherweise versehentlich ausführen, und bringt sie auf Ihre Aufmerksamkeit, damit Sie sie beheben können. (Geerbt von Object) |
| JniPeerMembers |
StrictMode ist ein Entwicklertool, das Dinge erkennt, die Sie möglicherweise versehentlich ausführen, und bringt sie auf Ihre Aufmerksamkeit, damit Sie sie beheben können. |
| PeerReference |
StrictMode ist ein Entwicklertool, das Dinge erkennt, die Sie möglicherweise versehentlich ausführen, und bringt sie auf Ihre Aufmerksamkeit, 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
| Name | Beschreibung |
|---|---|
| AllowThreadDiskReads() |
Ein Benutzerfreundlichkeitswrapper, der den aktuellen |
| AllowThreadDiskWrites() |
Ein Benutzerfreundlichkeitswrapper, der den aktuellen |
| 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 ausführen, und bringt sie auf Ihre Aufmerksamkeit, damit Sie sie beheben können. (Geerbt von Object) |
| Dispose(Boolean) |
StrictMode ist ein Entwicklertool, das Dinge erkennt, die Sie möglicherweise versehentlich ausführen, und bringt sie auf Ihre Aufmerksamkeit, damit Sie sie beheben können. (Geerbt von Object) |
| EnableDefaults() |
Aktiviert die empfohlenen StrictMode-Standardwerte, wobei nur 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 bestimmt, dass keine weiteren Verweise auf das Objekt vorhanden sind. (Geerbt von Object) |
| NoteSlowCall(String) |
Um Code zu beachten, dass es langsam ist. |
| Notify() |
Aktiviert einen einzelnen Thread, der auf dem Monitor dieses Objekts wartet. (Geerbt von Object) |
| NotifyAll() |
Aktiviert alle Threads, die auf dem 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 für den 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 ausführen, und bringt sie auf Ihre Aufmerksamkeit, 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 ausführen, und bringt sie auf Ihre Aufmerksamkeit, damit Sie sie beheben können. (Geerbt von Object) |
| Wait() |
Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch em benachrichtigt/em< oder >em<unterbrochen>/em<.><> (Geerbt von Object) |
| Wait(Int64, Int32) |
Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch <em>benachrichtigt</em> oder <em>unterbrochen</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist. (Geerbt von Object) |
| Wait(Int64) |
Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch <em>benachrichtigt</em> oder <em>unterbrochen</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist. (Geerbt von Object) |
Explizite Schnittstellenimplementierungen
| Name | Beschreibung |
|---|---|
| IJavaPeerable.Disposed() |
StrictMode ist ein Entwicklertool, das Dinge erkennt, die Sie möglicherweise versehentlich ausführen, und bringt sie auf Ihre Aufmerksamkeit, damit Sie sie beheben können. (Geerbt von Object) |
| IJavaPeerable.DisposeUnlessReferenced() |
StrictMode ist ein Entwicklertool, das Dinge erkennt, die Sie möglicherweise versehentlich ausführen, und bringt sie auf Ihre Aufmerksamkeit, damit Sie sie beheben können. (Geerbt von Object) |
| IJavaPeerable.Finalized() |
StrictMode ist ein Entwicklertool, das Dinge erkennt, die Sie möglicherweise versehentlich ausführen, und bringt sie auf Ihre Aufmerksamkeit, damit Sie sie beheben können. (Geerbt von Object) |
| IJavaPeerable.JniManagedPeerState |
StrictMode ist ein Entwicklertool, das Dinge erkennt, die Sie möglicherweise versehentlich ausführen, und bringt sie auf Ihre Aufmerksamkeit, damit Sie sie beheben können. (Geerbt von Object) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
StrictMode ist ein Entwicklertool, das Dinge erkennt, die Sie möglicherweise versehentlich ausführen, und bringt sie auf Ihre Aufmerksamkeit, damit Sie sie beheben können. (Geerbt von Object) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
StrictMode ist ein Entwicklertool, das Dinge erkennt, die Sie möglicherweise versehentlich ausführen, und bringt sie auf Ihre Aufmerksamkeit, damit Sie sie beheben können. (Geerbt von Object) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
StrictMode ist ein Entwicklertool, das Dinge erkennt, die Sie möglicherweise versehentlich ausführen, und bringt sie auf Ihre Aufmerksamkeit, damit Sie sie beheben können. (Geerbt von Object) |
Erweiterungsmethoden
| Name | Beschreibung |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Ruft den JNI-Namen des Typs der Instanz |
| JavaAs<TResult>(IJavaPeerable) |
Versuchen Sie, die Eingabe |
| JavaCast<TResult>(IJavaObject) |
Führt eine android-laufzeitgecheckte Typkonvertierung aus. |
| JavaCast<TResult>(IJavaObject) |
StrictMode ist ein Entwicklertool, das Dinge erkennt, die Sie möglicherweise versehentlich ausführen, und bringt sie auf Ihre Aufmerksamkeit, damit Sie sie beheben können. |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Versuchen Sie, die Eingabe |