nsIIdleService
出典: MDC
この記事は Firefox 3 の新機能について述べています
目次 |
nsIIdleService は widget/public/nsIIdleService.idl で定義されています。これは scriptable で
非凍結です。 (Mozilla 1.9aから更新されていません)
[編集] 概要
アイドルサービスは、ユーザがどのくらいの時間「アイドル状態」であるか、つまり、マウスやキーボードなどを使っていない時間を監視できるようにするサービスです。アイドル時間を直接取得することも可能ですが、所定の間隔でオブザーバを登録する使い方が一般的でしょう。
現在のところ、nsIIdleService の実装は、Windows、Mac OS X、Linux (XScreenSaver を通じて) に対応しています。
実装は @mozilla.org/widget/idleservice;1 で行われています。インスタンスを作成するには、以下のように記述します。
var idleService = Components.classes["@mozilla.org/widget/idleservice;1"]
.getService(Components.interfaces.nsIIdleService)
[編集] メソッドの概要
void addIdleObserver(in nsIObserver observer, in unsigned long time)
|
void removeIdleObserver(in nsIObserver observer, in unsigned long time)
|
[編集] 属性
| 属性 | 型 | 説明 |
idleTime
| long
| ユーザが最後に操作を行ってから経過したミリ秒単位での時間。読み取り専用 |
[編集] メソッド
[編集] addIdleObserver()
ユーザの操作が一定時間アイドル状態になった場合や、アイドル状態から復帰した際に通知を受けるオブザーバを追加します。
void addIdleObserver( in nsIObserver observer, in unsigned long time )
[編集] パラメータ
- observer
- 通知を受ける オブザーバ
- time
- オブザーバに通知が行われるまでのユーザのアイドル時間 (秒)
[編集] 備考
- オブザーバが受け取る通知のサブジェクトは、常に
nsIIdleServiceそのものです。ユーザがアイドル状態になった時、オブザーバのトピックは「idle」となり、復帰時には「back」となります。通知のデータパラメータには現在のユーザのアイドル時間が含まれます。
- 同じオブザーバを 2 回追加することができます。
- 大半の実装は、アイドル情報を取得するために OS に問い合わせを行う必要があります。これは、その実装の問い合わせ間隔によって、通知に遅延が生じる可能性があるということです。この間隔は、現在の実装では 5 秒となっています。
[編集] removeIdleObserver()
addIdleObserver で登録されたオブザーバを削除します。
void removeIdleObserver( in nsIObserver observer, in unsigned long time )
[編集] パラメータ
- observer
- 削除する オブザーバ
- time
- オブザーバに通知が行われるまでのユーザのアイドル時間 (秒)
[編集] 備考
オブザーバの削除は、指定したアイドル時間のオブザーバについて 1 回だけ行われます。オブザーバを複数追加した場合は、個別に削除する必要があります。
[編集] サンプルコード
例 1:
var idleService = Components.classes["@mozilla.org/widget/idleservice;1"]
.getService(Components.interfaces.nsIIdleService)
setTimeout(function() { alert(idleService.idleTime) }, 1000)
// このコードを追加した後、マウスやキーボードを操作しないと、
// 1000 前後の数字が警告ダイアログで表示されます。
例 2:
var idleService = Components.classes["@mozilla.org/widget/idleservice;1"]
.getService(Components.interfaces.nsIIdleService)
var idleObserver = {
observe: function(subject, topic, data) {
alert("topic: " + topic + "\ndata: " + data);
}
};
idleService.addIdleObserver(idleObserver, 60); // 1 分
// ...
// removeIdleObserver を使ってオブザーバを削除するのを忘れずに!
idleService.removeIdleObserver(idleObserver, 60);