Attualmente dispongo di un servizio in Android che è un client VOIP di esempio in modo che sia in ascolto per i messaggi SIP e se ne riceve uno avvia una schermata Attività con componenti dell'interfaccia utente.Un modo più efficiente di aggiornare l'interfaccia utente dal servizio rispetto alle intenzioni?
Quindi i seguenti messaggi SIP determinano l'attività da visualizzare sullo schermo. Ad esempio se si tratta di una chiamata in arrivo, verrà visualizzato Rispondi o Rifiuta o una chiamata in uscita mostrerà una schermata di composizione.
Nel momento in cui utilizzo Intents per consentire all'attività di conoscere lo stato da visualizzare.
Un esempio è la seguente:
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");
Così l'attività avrà un ricevitore trasmissione registrata per questi intenti e passerà il suo stato secondo l'ultimo intento che ha ricevuto.
codice di esempio come segue:
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);
Questo funziona però sembra che non è molto efficiente, gli intenti otterrà sistema di trasmissione ampio e Intenti dover sparare per diversi stati sembra come potrebbe diventare inefficiente più devo aggiungere e aggiungere complessità.
Quindi mi chiedevo se c'è un modo diverso più efficiente e più pulito per fare questo?
C'è un modo per mantenere la trasmissione Intenti solo all'interno di un'applicazione?
Le richiamate sarebbero un'idea migliore? Se sì, perché e in che modo dovrebbero essere implementati?
Ho letto il tuo post un paio di volte Rich e non sono sicuro di cosa intendi. Potresti fornire un link ad un esempio di come è stato fatto in quel modo? –
Ho fornito ulteriori spiegazioni sopra ... fammi sapere se ne hai di più o se non è chiaro. – Rich
Grazie per quel Rich, post eccellente! –