2017-07-23 10 views
-5

Warum haben einige API Handler als Methodenparameter? Was sind die möglichen Anwendungsfälle? Insbesondere brauche ich jemanden, der erklärt, warum wir einen Handler in der dispatchest Methode brauchen. Ich versuche, den Drag-Vorgang für den Benutzer mit dieser Methode "dispatchgesture" auszuführen.Handler als Methodenparameter

boolean dispatchGesture (GestureDescription gesture, 
       AccessibilityService.GestureResultCallback callback, 
       Handler handler) 
+0

Dies ist nützlich, wenn Sie Ihren 'Callback' in nicht UI-Thread – pskink

+0

ausführen möchten, ist es möglich, Drag mit dieser Methode im Benutzerauftrag durchzuführen ... @pskink – sevenio

+0

hat es nie versucht ... – pskink

Antwort

0

Von dispatchGesturedoc,

RückrufAccessibilityService.GestureResultCallback: Das Objekt Rückruf, wenn der Status der Geste bekannt ist. Wenn Null, wird kein Status gemeldet.

HandlerHandler: Der Handler, auf dem die Callback-Objekt zurückzurufen. Wenn null, wird das Objekt auf dem Hauptthread des Diensts zurückgerufen.

Das bedeutet im Grunde, wenn Sie keinen Handler bereitstellen, wird der angegebene Callback auf dem Hauptthread ausgeführt.

Es wird immer davon abgeraten, teure UI-Updater-Aufgaben im Hauptthread auszuführen. Wenn Sie also einen Handler als method param übergeben, ist es meistens dazu da, den UI-Thread aufzuhellen, indem Sie einige der schweren Aufgaben entfernen, sie in einem anderen Thread (Handler, in diesem Fall) bearbeiten und posten das Ergebnis, wenn es fertig ist.

+0

das beantwortet meine Frage zu Handler ... aber was ist mit der Drag-Funktionalität, die ich implementieren möchte. Ist es möglich ? @fluffyBatman – sevenio

+0

Ich fürchte, ich kann dir damit nicht helfen. – fluffyBatman

Verwandte Themen