Sprache

IWatchService Schnittstelle

Definition

Ein Überwachungsdienst, der <>registrierte Objekte für Änderungen und Ereignisse überwacht</em> ansieht.

[Android.Runtime.Register("java/nio/file/WatchService", "", "Java.Nio.FileNio.IWatchServiceInvoker", ApiSince=26)]
public interface IWatchService : IDisposable, Java.Interop.IJavaPeerable, Java.IO.ICloseable
[<Android.Runtime.Register("java/nio/file/WatchService", "", "Java.Nio.FileNio.IWatchServiceInvoker", ApiSince=26)>]
type IWatchService = interface
    interface ICloseable
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
Attribute
Implementiert

Hinweise

Ein Überwachungsdienst, der <>registrierte Objekte für Änderungen und Ereignisse überwacht</em> ansieht. Beispielsweise kann ein Datei-Manager einen Überwachungsdienst verwenden, um ein Verzeichnis auf Änderungen zu überwachen, sodass er die Anzeige der Liste der Dateien aktualisieren kann, wenn Dateien erstellt oder gelöscht werden.

Ein Watchable Objekt wird bei einem Überwachungsdienst registriert, indem er seine Watchable#register register Methode aufruft und eine WatchKey zur Darstellung der Registrierung zurückgibt. Wenn ein Ereignis für ein Objekt erkannt wird, wird <der Schlüssel signalisiert></em> erkannt, und wenn es derzeit nicht signalisiert ist, wird es an den Überwachungsdienst in die Warteschlange gestellt, sodass es von Verbrauchern abgerufen werden kann, die die #poll() poll Schlüssel aufrufen oder #take() take Methoden zum Abrufen von Schlüsseln und Prozessereignissen aufrufen. Sobald die Ereignisse verarbeitet wurden, ruft der Consumer die Methode des Schlüssels WatchKey#reset reset auf, um den Schlüssel zurückzusetzen, wodurch der Schlüssel signalisiert und mit weiteren Ereignissen erneut in die Warteschlange gestellt werden kann.

Die Registrierung bei einem Überwachungsdienst wird durch Aufrufen der Methode des Schlüssels WatchKey#cancel cancel abgebrochen. Ein Schlüssel, der zum Zeitpunkt der Kündigung in die Warteschlange eingereiht wird, verbleibt in der Warteschlange, bis er abgerufen wird. Je nach Objekt wird möglicherweise automatisch ein Schlüssel abgebrochen. Angenommen, ein Verzeichnis wird überwacht, und der Überwachungsdienst erkennt, dass es gelöscht wurde, oder auf das Dateisystem kann nicht mehr zugegriffen werden. Wenn ein Schlüssel auf diese Weise abgebrochen wird, wird er signalisiert und in die Warteschlange eingereiht, wenn er zurzeit nicht signalisiert ist. Um sicherzustellen, dass der Verbraucher über den Rückgabewert der reset Methode benachrichtigt wird, gibt an, ob der Schlüssel gültig ist.

Ein Überwachungsdienst ist für die Verwendung durch mehrere gleichzeitige Verbraucher sicher. Um sicherzustellen, dass immer nur ein Verbraucher die Ereignisse für ein bestimmtes Objekt verarbeitet, muss sichergestellt werden, dass die Methode des Schlüssels reset erst aufgerufen wird, nachdem seine Ereignisse verarbeitet wurden. Die #close close Methode kann jederzeit aufgerufen werden, um den Dienst zu schließen, was dazu führt, dass Threads, die auf das Abrufen von Schlüsseln warten, ausgelöst ClosedWatchServiceExceptionwerden.

Dateisysteme können Ereignisse schneller melden, als sie abgerufen oder verarbeitet werden können, und eine Implementierung kann eine nicht angegebene Grenze für die Anzahl der Ereignisse auferlegen, die sie ansammeln kann. Wenn eine Implementierung <wissentlich></em> Ereignisse verwirft, ordnet sie die Methode des Schlüssels WatchKey#pollEvents pollEvents an, um ein Element mit einem Ereignistyp StandardWatchEventKinds#OVERFLOW OVERFLOWzurückzugeben. Dieses Ereignis kann vom Consumer als Trigger verwendet werden, um den Status des Objekts erneut zu untersuchen.

Wenn ein Ereignis gemeldet wird, um anzugeben, dass eine Datei in einem überwachten Verzeichnis geändert wurde, besteht keine Garantie dafür, dass das Programm (oder die Programme), die die Datei geändert haben, abgeschlossen ist. Achten Sie darauf, den Zugriff mit anderen Programmen zu koordinieren, die die Datei möglicherweise aktualisieren. Die java.nio.channels.FileChannel FileChannel Klasse definiert Methoden zum Sperren von Bereichen einer Datei gegen den Zugriff durch andere Programme.

<h2>Plattformabhängigkeiten</h2>

Die Implementierung, die Ereignisse aus dem Dateisystem beobachtet, soll direkt der systemeigenen Ereignisbenachrichtigungseinrichtung zugeordnet werden, sofern verfügbar, oder einen primitiven Mechanismus verwenden, z. B. Das Abrufen, wenn eine systemeigene Einrichtung nicht verfügbar ist. Daher sind viele der Details dazu, wie Ereignisse erkannt werden, ihre Zeitachsen und ob ihre Reihenfolge erhalten bleibt, sehr implementierungsspezifisch. Wenn beispielsweise eine Datei in einem überwachten Verzeichnis geändert wird, kann dies zu einem einzelnen StandardWatchEventKinds#ENTRY_MODIFY ENTRY_MODIFY Ereignis in einigen Implementierungen, aber mehreren Ereignissen in anderen Implementierungen führen. Kurzlebige Dateien (d. h. Dateien, die nach der Erstellung sehr schnell gelöscht werden) werden möglicherweise nicht von primitiven Implementierungen erkannt, die das Dateisystem regelmäßig abfragen, um Änderungen zu erkennen.

Wenn sich eine überwachte Datei nicht auf einem lokalen Speichergerät befindet, ist sie implementierungsspezifisch, wenn Änderungen an der Datei erkannt werden können. Insbesondere ist es nicht erforderlich, dass Änderungen an Dateien, die auf Remotesystemen durchgeführt werden, erkannt werden.

In 1.7 hinzugefügt.

Java Dokumentation für java.nio.file.WatchService.

Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden.

Eigenschaften

Name Beschreibung
Handle

Ruft den JNI-Wert des zugrunde liegenden Android-Objekts ab.

(Geerbt von IJavaObject)
JniIdentityHashCode

Gibt den Wert java.lang.System.identityHashCode() für die umbrochene Instanz zurück.

(Geerbt von IJavaPeerable)
JniManagedPeerState

Status des verwalteten Peers.

(Geerbt von IJavaPeerable)
JniObjectReferenceControlBlock

Ein Überwachungsdienst, der <>registrierte Objekte für Änderungen und Ereignisse überwacht</em> ansieht.

(Geerbt von IJavaPeerable)
JniPeerMembers

Mitgliedszugriff und Aufrufunterstützung.

(Geerbt von IJavaPeerable)
PeerReference

Gibt eine JniObjectReference der umbrochenen Java Objektinstanz zurück.

(Geerbt von IJavaPeerable)

Methoden

Name Beschreibung
Close()

Schließt diesen Überwachungsdienst.

Disposed()

Wird aufgerufen, wenn die Instanz verworfen wurde.

(Geerbt von IJavaPeerable)
DisposeUnlessReferenced()

Wenn keine offenen Verweise auf diese Instanz vorhanden sind, wird nichts aufgerufen Dispose(). Andernfalls wird nichts ausgeführt.

(Geerbt von IJavaPeerable)
Finalized()

Wird aufgerufen, wenn die Instanz abgeschlossen wurde.

(Geerbt von IJavaPeerable)
Poll()

Ruft die nächste Überwachungstaste ab und entfernt sie, oder null wenn keine vorhanden ist.

Poll(Int64, TimeUnit)

Ruft die nächste Überwachungstaste ab und entfernt sie, wenn erforderlich, bis zur angegebenen Wartezeit, wenn noch keine vorhanden ist.

SetJniIdentityHashCode(Int32)

Legen Sie den von JniIdentityHashCode.

(Geerbt von IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

Ein Überwachungsdienst, der <>registrierte Objekte für Änderungen und Ereignisse überwacht</em> ansieht.

(Geerbt von IJavaPeerable)
SetPeerReference(JniObjectReference)

Legen Sie den von PeerReference.

(Geerbt von IJavaPeerable)
Take()

Ruft die nächste Überwachungstaste ab und entfernt sie, und wartet, wenn noch keine vorhanden ist.

UnregisterFromRuntime()

Heben Sie die Registrierung dieser Instanz auf, damit die Laufzeit sie nicht aus zukünftigen Java.Interop.JniRuntime+JniValueManager.PeekValue Aufrufen zurückgibt.

(Geerbt von IJavaPeerable)

Erweiterungsmethoden

Name Beschreibung
GetJniTypeName(IJavaPeerable)

Ruft den JNI-Namen des Typs der Instanz selfab.

JavaAs<TResult>(IJavaPeerable)

Versuchen Sie, die Eingabe selfzu TResult erzwingen, und überprüfen Sie, ob die Koersion auf der Java Seite gültig ist.

JavaCast<TResult>(IJavaObject)

Führt eine android-laufzeitgecheckte Typkonvertierung aus.

JavaCast<TResult>(IJavaObject)

Ein Überwachungsdienst, der <>registrierte Objekte für Änderungen und Ereignisse überwacht</em> ansieht.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Versuchen Sie, die Eingabe selfzu TResult erzwingen, und überprüfen Sie, ob die Koersion auf der Java Seite gültig ist.

Gilt für: