Ich habe eine Adobe AIR-Anwendung in reinem AS3 geschrieben, die über einige Funktionen verfügt, wenn der Benutzer inaktiv ist und bei Rückkehr des Benutzers in den normalen Zustand zurückkehrt. Ich Erfassen dieser Aktivität mit dem folgenden Code:Seltsames Verhalten bei der Leerlauferkennung von Benutzern in Adobe Air unter Mac
NativeApplication.nativeApplication.idleThreshold = 180;
NativeApplication.nativeApplication.addEventListener(Event.USER_IDLE, onUserIdle);
NativeApplication.nativeApplication.addEventListener(Event.USER_PRESENT, onUserPresent);
Die onUserIdle
Methode nach 3 Minuten aufgerufen wird, wie es sein sollte, aber dann das onUserPresent
Ereignis wird fast unmittelbar danach gefeuert. Ich spreche Millisekunden später. Dies geschieht ohne jegliche Benutzereingabe. Das Seltsame ist, dass dies unter Windows nicht auftritt - nur unter OSX. Und das passiert bei allen OSX-Varianten, die auf 10.6.3 zurückgehen.
Die Dokumentation von Adobe ist unglaublich vage, wie diese Ereignisse bestimmt werden, daher bin ich mir nicht sicher, ob ich etwas auf Systemebene tun kann, um das Problem zu beheben. Hat jemand Erfahrung mit diesem Problem, und wenn nicht, irgendwelche anderen Vorschläge, wie ich Benutzerunruhe feststellen kann, selbst wenn die App nicht den Fokus hat?
Um dem Vorschlag vorzubeugen, kann ich Maus/Tastatur-Listener nicht verwenden, um das gleiche Verhalten zu simulieren, da sie nicht funktionieren, wenn die Anwendung den Fokus verliert, während die NativeApplication
Ereignisse weiterhin ausgelöst werden. Ich habe auch NativeProcess
verwendet, um die Ausgabe von ioreg zu erhalten, um die Hardware-Leerlaufzeit zu erhalten, wie vom System gemeldet, aber es scheint nicht von der Maus betroffen zu sein.
Ich schätze wirklich jede Hilfe.
Bearbeiten: Ich habe gerade festgestellt, dass dies nicht auftritt, wenn die Anwendung in einem Administratorkonto unter OSX ausgeführt wird. Es passiert nur in einem Benutzerkonto, das nur dazu dient, mich mehr zu verwirren.
Ich frage mich, ob der Schwellenwert irgendwie zurückgesetzt oder einfach ignoriert wird. Was passiert, wenn Sie die Reihenfolge der 2. und 3. Zeile invertieren? –
@SauloSilva Interessant, dass Sie fragen, weil ich das tatsächlich getan habe, und es gab keinen Unterschied im beobachteten Verhalten. Der Schwellenwert ist konstant und korrekt, wenn ich ihn in den Ereignisprozeduren ausfindig mache. Eine Sache, die ich gerade entdeckt habe (und ich werde die Frage aktualisieren) ist, dass dies nicht in einem Administratorkonto geschieht - dies geschieht nur in einem normalen Benutzerkonto - was einen Riesenschraubenschlüssel in die Situation bringt! – lookitsatravis
Wow. Dies scheint ein Fehler zu sein. Hier ist eine ähnliche: http://forums.adobe.com/thread/570669 –