Frage

habe ich einen Dienst, der zuhört an eine Steckdose. Wenn bestimmte Eingabe erhält, ist es eine Aktivität zu erstellen. Wenn anderen Eingang empfängt, ist es, diese Aktivität zu töten. Ich habe für eine Weile zu kämpfen, um den Service mit der Aktivität durch AIDL kommunizieren zu machen ( http : //developer.android.com/guide/developing/tools/aidl.html ), aber dies scheint nicht wirksam zu sein. Ich denke, AIDL nur dann wirksam ist, wenn der Prozess, der werden, gesprochen ist ein Dienst ist, nicht, wenn es sich um eine Tätigkeit ist? Ich würde einige Richtungen oder Anregungen lieben, wie mein Problem zu lösen.

Cheers,

War es hilfreich?

Lösung

  

ich eine Dienstleistung, die Streams zu einem   Steckdose. Beim Empfang von bestimmten Eingangs   es ist eine Aktivität zu erstellen.

Bitte konfigurierbar machen. Dienstleistungen sollen Aktivitäten außer in sehr ungewöhnliche Umständen nicht beginnen (beispielsweise die Buchse ist eine SIP-Verbindung und Sie ein VoIP-Client erstellen). Aufspringen eine Aktivität unterbricht der Benutzer in allem, was sie tun.

  

Wenn anderen Eingang empfängt, ist es zu   töten diese Aktivität.

Das einzige Szenario, das ich gesehen habe, wo dies ein gültiges Muster wird abgewiesen, die in-Call-Bildschirm, wenn die andere Partei aufhängt die Linie. Wenn Sie ein VoIP-Client erstellen, sollten Sie Ihre vorgeschlagene Muster in Ordnung sein, aber ansonsten überdenken Sie bitte die Aktivität verschwindet in der Mitte des Benutzers mit der Benutzung.

  

Ich denke, AIDL nur dann wirksam ist, wenn   der Prozess, der zu ist zu gesprochen ist   ein Dienst, nicht, wenn es sich um eine Tätigkeit?

Nein, es funktioniert in umgekehrter Richtung auch, aber in der Regel nur dann, wenn die Aktivität der ist Start des Dienstes und die Bindung an sie. Noch wichtiger ist, AIDL ist nur für prozessübergreifende Kommunikation.

  

Ich würde einige Richtungen lieben oder   Vorschläge, wie meine zu lösen   Problem dar.

Sie haben nicht wirklich genug Informationen über die Art der Kommunikation, sofern Sie eine gründliche Antwort zu geben. Was genau versucht der Dienst der Aktivität zu erzählen? Ist die Aktivität auch versuchen, mit dem Dienst zu kommunizieren?

Die empfohlene Muster für kontinuierliche Kommunikation von einer Aktivität zu einem Dienst sind das lokale Bindungsmuster zu verwenden. Sie werden ein Beispiel dafür in der SDK-Beispiele finden, und Sie können ein hier auch.

Der Dienst hat dann Optionen für die Kommunikation an den Client zurück: über einen Rückruf (beispielsweise die Handler in der Antwort geliefert von Herrn Smiljanić) oder per Broadcast Intents. Im Fall des Callback, müßte die Aktivität zu binden an den Dienst, um den Zugriff auf eine API zu erhalten, das Callback-Objekt zur Verfügung zu stellen. Der Dienst würde dann festhalten, dass das Objekt und Aufrufen von Methoden auf sie während der wichtigsten Ereignisse.

Wenn Ihr Dienst wird seine primäre Arbeit auf einem Hintergrund-Thread zu tun, müssen Sie sicherstellen, dass Ihre UI-Operationen auf dem UI-Thread ausgeführt zu bekommen. Der Handler ist ein Ansatz dafür.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top