nsIIdleService

« XPCOM API Reference

Please add a summary to this article.
  最終更新: Gecko 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
)
パラメータ
<tt>observer</tt>
通知を受ける オブザーバ
<tt>time</tt>
オブザーバに通知が行われるまでのユーザのアイドル時間 (秒)
備考
  • オブザーバが受け取る通知のサブジェクトは、常に nsIIdleService そのものです。ユーザがアイドル状態になった時、オブザーバのトピックは「idle」となり、復帰時には「back」となります。通知のデータパラメータには現在のユーザのアイドル時間が含まれます。
  • 同じオブザーバを 2 回追加することができます。
  • 大半の実装は、アイドル情報を取得するために OS に問い合わせを行う必要があります。これは、その実装の問い合わせ間隔によって、通知に遅延が生じる可能性があるということです。この間隔は、現在の実装では 5 秒となっています。

removeIdleObserver()

addIdleObserver で登録されたオブザーバを削除します。

void removeIdleObserver(
  in nsIObserver observer,
  in unsigned long time
)
パラメータ
<tt>observer</tt>
削除する オブザーバ
<tt>time</tt>
オブザーバに通知が行われるまでのユーザのアイドル時間 (秒)
備考

オブザーバの削除は、指定したアイドル時間のオブザーバについて 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);

Document Tags and Contributors

Contributors to this page: Kohei, Mgjbot
最終更新者: Kohei,