IWatchService インターフェイス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
登録されたオブジェクトを<>変更とイベントに対して監視</em> するwatch サービス。
[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
- 属性
- 実装
注釈
登録されたオブジェクトを<>変更とイベントに対して監視</em> するwatch サービス。 たとえば、ファイル マネージャーは、ファイルの作成時または削除時にファイルの一覧の表示を更新できるように、watch サービスを使用してディレクトリの変更を監視できます。
Watchable
オブジェクトは、そのWatchable#register register
メソッドを呼び出して登録を表す を返WatchKey
すことによって、watch サービスに登録されます。 オブジェクトのイベントが検出されると、キーは <>em signalled</em> であり、現在シグナル化されていない場合は、キーを取得してイベントを処理する または #take() take
メソッドを呼び出#poll() poll
すコンシューマーが取得できるように、watch サービスにキューに入れられます。 イベントが処理されると、コンシューマーはキーの WatchKey#reset reset
メソッドを呼び出してキーをリセットします。これにより、キーにシグナルを送信し、さらにイベントをキューに入れ直すことができます。
watch サービスへの登録は、キーの WatchKey#cancel cancel
メソッドを呼び出すことによって取り消されます。 取り消された時点でキューに入っているキーは、取得されるまでキューに残ります。 オブジェクトによっては、キーが自動的に取り消される場合があります。 たとえば、ディレクトリが監視され、watch サービスによって削除されたか、ファイル システムにアクセスできなくなったことが検出されたとします。 この方法でキーが取り消されると、現在通知されていない場合は、シグナルが送られ、キューに入れられます。 コンシューマーに通知を受け取るために、 メソッドからの戻り値は reset
、キーが有効かどうかを示します。
watch サービスは、複数の同時実行コンシューマーで使用しても安全です。 特定のオブジェクトのイベントを常に 1 つのコンシューマーのみが処理できるようにするには、キーの reset
メソッドがイベントの処理後にのみ呼び出されるように注意する必要があります。 メソッドはいつでも #close close
呼び出してサービスを閉じ、キーの取得を待機しているスレッドが をスロー ClosedWatchServiceException
するようにすることができます。
ファイル システムは、イベントを取得または処理できるよりも速く報告する場合があり、実装によって蓄積される可能性のあるイベントの数に未指定の制限が課される可能性があります。 実装 <em がイベントを破棄する場合><、イベントの種類StandardWatchEventKinds#OVERFLOW OVERFLOW
が の要素を返すようにキーの WatchKey#pollEvents pollEvents
メソッドが配置>されます。 このイベントは、コンシューマーがオブジェクトの状態を再調査するためのトリガーとして使用できます。
監視対象ディレクトリ内のファイルが変更されたことを示すイベントが報告された場合、ファイルを変更したプログラム (またはプログラム) が完了したという保証はありません。 ファイルを更新している可能性のある他のプログラムとのアクセスを調整するには、注意が必要です。 クラスは java.nio.channels.FileChannel FileChannel
、他のプログラムによるアクセスに対してファイルの領域をロックするメソッドを定義します。
<h2>プラットフォームの依存関係</h2>
ファイル システムからのイベントを監視する実装は、使用可能な場合はネイティブ ファイル イベント通知機能に直接マップするか、ネイティブ機能が使用できない場合はポーリングなどのプリミティブ メカニズムを使用することを目的としています。 そのため、イベントの検出方法、タイムライン、および順序が保持されるかどうかに関する詳細の多くは、高度な実装固有のものです。 たとえば、監視ディレクトリ内のファイルが変更されると、一部の実装では 1 つの StandardWatchEventKinds#ENTRY_MODIFY ENTRY_MODIFY
イベントが発生し、他の実装では複数のイベントが発生する可能性があります。 有効期間の短いファイル (作成後に非常に迅速に削除されるファイル) は、定期的にファイル システムをポーリングして変更を検出するプリミティブ実装では検出されない場合があります。
監視対象のファイルがローカル ストレージ デバイスに配置されていない場合は、ファイルの変更を検出できる場合は実装固有です。 特に、リモート システムで実行されるファイルの変更を検出する必要はありません。
1.7 で追加されました。
の Java ドキュメント java.nio.file.WatchService
。
このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。
プロパティ
Handle |
基になる Android オブジェクトの JNI 値を取得します。 (継承元 IJavaObject) |
JniIdentityHashCode |
ラップされたインスタンスの の |
JniManagedPeerState |
マネージド ピアの状態。 (継承元 IJavaPeerable) |
JniPeerMembers |
メンバー アクセスと呼び出しのサポート。 (継承元 IJavaPeerable) |
PeerReference |
JniObjectReferenceラップされた Java オブジェクト インスタンスの を返します。 (継承元 IJavaPeerable) |
メソッド
Close() |
このwatch サービスを閉じます。 |
Disposed() |
インスタンスが破棄されたときに呼び出されます。 (継承元 IJavaPeerable) |
DisposeUnlessReferenced() |
このインスタンスへの未処理の参照がない場合は、 を呼び出 |
Finalized() |
インスタンスが終了したときに呼び出されます。 (継承元 IJavaPeerable) |
Poll() |
次のwatchキーを取得して削除します |
Poll(Int64, TimeUnit) |
次のwatch キーを取得して削除し、必要に応じて、指定された待機時間まで待機します (まだ存在しない場合)。 |
SetJniIdentityHashCode(Int32) |
によって返される値を |
SetJniManagedPeerState(JniManagedPeerStates) |
登録されたオブジェクトを<>変更とイベントに対して監視</em> するwatch サービス。 (継承元 IJavaPeerable) |
SetPeerReference(JniObjectReference) |
によって返される値を |
Take() |
次のwatchキーを取得して削除し、まだ存在しない場合は待機します。 |
UnregisterFromRuntime() |
ランタイムが将来 Java.Interop.JniRuntime+JniValueManager.PeekValue の呼び出しから返されないように、このインスタンスの登録を解除します。 (継承元 IJavaPeerable) |
拡張メソッド
JavaCast<TResult>(IJavaObject) |
Android ランタイムチェック型変換を実行します。 |
JavaCast<TResult>(IJavaObject) |
登録されたオブジェクトを<>変更とイベントに対して監視</em> するwatch サービス。 |
GetJniTypeName(IJavaPeerable) |
登録されたオブジェクトを<>変更とイベントに対して監視</em> するwatch サービス。 |