Share via


IWatchService 介面

定義

watch服務,em <> watches < /em > 已註冊物件的變更和事件。

[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
屬性
實作

備註

watch服務,em <> watches < /em > 已註冊物件的變更和事件。 例如,檔案管理員可能會使用watch服務來監視目錄是否有變更,以便在建立或刪除檔案時更新其檔案清單的顯示。

Watchable物件會藉由叫用其 Watchable#register register 方法向watch服務註冊,並傳回 WatchKey 代表註冊的 。 當偵測到物件的事件時,索引鍵會 < 發出訊號 < /em > ,如果目前未發出訊號,則會將它排入佇列至watch服務,讓叫用 或 方法來擷取或 #take() take 方法來擷取金鑰和處理事件的取用者 #poll() poll> 。 一旦處理事件之後,取用者會叫用金鑰的 WatchKey#reset reset 方法來重設金鑰,讓金鑰能夠發出訊號,並以進一步的事件重新排入佇列。

叫用金鑰的 WatchKey#cancel cancel 方法會取消向watch服務註冊。 在取消時排入佇列的索引鍵會保留在佇列中,直到擷取它為止。 視 物件而定,金鑰可能會自動取消。 例如,假設已監看目錄,且watch服務偵測到它已刪除,或其檔案系統無法再存取。 以這種方式取消金鑰時,如果目前未發出訊號,則會發出訊號並排入佇列。 為了確保取用者收到通知,方法的 reset 傳回值會指出金鑰是否有效。

watch服務可供多個並行取用者使用。 為了確保任何時間只有一個取用者會處理特定物件的事件,請小心確保索引鍵的 reset 方法只在處理其事件之後才叫用。 #close close方法可以隨時叫用,以關閉服務,導致任何執行緒等待擷取索引鍵,以擲回 ClosedWatchServiceException

檔案系統可能會報告事件的速度比擷取或處理快,而且實作可能會對可能累積的事件數目施加未指定的限制。 其中實 < 作 em > 知道 < /em > 會捨棄事件,然後它會排列索引鍵的 WatchKey#pollEvents pollEvents 方法,以傳回事件種類為 的專案 StandardWatchEventKinds#OVERFLOW OVERFLOW 。 取用者可以使用此事件作為觸發程式,以重新檢查物件的狀態。

當報告事件指出已修改受監看目錄中的檔案時,不保證程式 (或已修改檔案的程式) 已完成。 請小心,以便與其他可能更新檔案的程式協調存取。 類別 java.nio.channels.FileChannel FileChannel 會定義方法,以鎖定檔案的區域,以防止其他程式存取。

<h2 > 平臺相依性 < /h2>

觀察檔案系統事件實作的目的是要直接對應至可用的原生檔案事件通知設備,或在原生設備無法使用時使用基本機制,例如輪詢。 因此,許多關於如何偵測事件、其時程表,以及保留其順序是否為高度實作的特定詳細資料。 例如,修改受監看目錄中的檔案時,可能會導致某些實作中的單 StandardWatchEventKinds#ENTRY_MODIFY ENTRY_MODIFY 一事件,但其他實作中有數個事件。 短期檔案 (表示在建立檔案之後非常快速地刪除的檔案,) 可能無法由定期輪詢檔案系統以偵測變更的基本實作偵測到。

如果監看過的檔案不在本機儲存裝置上,則會在偵測到檔案的變更時實作特定。 特別是,不需要對遠端系統上執行的檔案進行變更。

已在 1.7 中新增。

java.nio.file.WatchService JAVA 檔。

此頁面的部分是根據所建立和共用的工作進行修改,並根據 2.5 屬性授權中所述的詞彙來使用。

屬性

Handle

取得基礎 Android 物件的 JNI 值。

(繼承來源 IJavaObject)
JniIdentityHashCode

傳回已包裝實例的 值 java.lang.System.identityHashCode()

(繼承來源 IJavaPeerable)
JniManagedPeerState

Managed 對等的狀態。

(繼承來源 IJavaPeerable)
JniPeerMembers

成員存取和調用支援。

(繼承來源 IJavaPeerable)
PeerReference

JniObjectReference 回已包裝 JAVA 物件實例的 。

(繼承來源 IJavaPeerable)

方法

Close()

關閉此watch服務。

Disposed()

處置實例時呼叫。

(繼承來源 IJavaPeerable)
DisposeUnlessReferenced()

如果這個實例沒有未完成的參考,則呼叫 Dispose() ,否則不會執行任何動作。

(繼承來源 IJavaPeerable)
Finalized()

實例完成時呼叫。

(繼承來源 IJavaPeerable)
Poll()

擷取並移除下一個watch索引鍵,如果沒有,則 null 為 。

Poll(Int64, TimeUnit)

擷取並移除下一個watch索引鍵,視需要等候到指定的等候時間,如果沒有的話。

SetJniIdentityHashCode(Int32)

設定 所 JniIdentityHashCode 傳回的值。

(繼承來源 IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

watch服務,em <> watches < /em > 已註冊物件的變更和事件。

(繼承來源 IJavaPeerable)
SetPeerReference(JniObjectReference)

設定 所 PeerReference 傳回的值。

(繼承來源 IJavaPeerable)
Take()

擷取並移除下一個watch鍵,等候沒有任何金鑰存在。

UnregisterFromRuntime()

取消註冊這個實例,讓執行時間不會從未來的 Java.Interop.JniRuntime+JniValueManager.PeekValue 調用傳回它。

(繼承來源 IJavaPeerable)

擴充方法

JavaCast<TResult>(IJavaObject)

執行 Android 執行時間檢查的類型轉換。

JavaCast<TResult>(IJavaObject)

watch服務,em <> watches < /em > 已註冊物件的變更和事件。

GetJniTypeName(IJavaPeerable)

watch服務,em <> watches < /em > 已註冊物件的變更和事件。

適用於