Ich habe zZ einen Service in Android, der ein Beispiel VOIP-Klient ist, also hört er nach SIP-Nachrichten und wenn er einen erhält, startet er einen Tätigkeitsbildschirm mit UI-Bestandteilen.Effizientere Art der UI-Aktualisierung von Service als Intents?
Dann bestimmen die folgenden SIP-Nachrichten, welche Aktivität auf dem Bildschirm angezeigt werden soll. Zum Beispiel, wenn es ein ankommender Anruf ist, wird es Answer oder Reject oder einen ausgehenden Anruf anzeigen, es wird ein Wahlbildschirm angezeigt.
In der Minute verwende ich Intents, um der Aktivität mitzuteilen, welchen Status sie anzeigen soll.
Ein Beispiel ist wie folgt:
Intent i = new Intent();
i.setAction(SIPEngine.SIP_TRYING_INTENT);
i.putExtra("com.net.INCOMING", true);
sendBroadcast(i);
Intent x = new Intent();
x.setAction(CallManager.SIP_INCOMING_CALL_INTENT);
sendBroadcast(x);
Log.d("INTENT SENT", "INTENT SENT INCOMING CALL AFTER PROCESSINVITE");
So ist die Aktivität eines Rundfunkempfänger für diese Absichten registriert haben wird und seinen Zustand wechseln entsprechend der letzten Absicht es empfangen.
Beispielcode wie folgt:
SipCallListener = new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if(SIPEngine.SIP_RINGING_INTENT.equals(action)){
Log.d("cda ", "Got RINGING action SIPENGINE");
ringingSetup();
}
if(CallManager.SIP_INCOMING_CALL_INTENT.equals(action)){
Log.d("cda ", "Got PHONE RINGING action");
incomingCallSetup();
}
}
};
IntentFilter filter = new IntentFilter(CallManager.SIP_INCOMING_CALL_INTENT);
filter.addAction(CallManager.SIP_RINGING_CALL_INTENT);
registerReceiver(SipCallListener, filter);
Dies funktioniert jedoch scheint es, wie es nicht sehr effizient ist, werden die Intents Broadcast-System breit bekommen und Intents für verschiedene Zustände zu feuern, die scheint Wie es ineffizient werden könnte, desto mehr muss ich hinzufügen und Komplexität hinzufügen.
Also habe ich mich gefragt, ob es eine andere effizientere und sauberere Möglichkeit gibt, dies zu tun?
Gibt es eine Möglichkeit Intents nur in einer Anwendung zu senden?
Wären Rückrufe eine bessere Idee? Wenn ja, warum und auf welche Weise sollten sie umgesetzt werden?
Ich habe Ihren Beitrag ein paar Mal gelesen Rich und ich bin mir nicht sicher, was du meinst. Könnten Sie einen Link zu einem Beispiel dafür geben, wie es so gemacht wurde? –
Ich habe oben eine weitere Erklärung gegeben ... lassen Sie mich wissen, wenn Sie mehr haben? S oder wenn es nicht klar ist. – Rich
Danke für das Rich, ausgezeichnete Post! –