Devo usare android: processo =“remoto” nel mio ricevitore?

Ho un BroadcastReceiver che è chiamata ogni tanto, e ho notato che molte persone usano

android: process =":remote" 

nella loro ricevitore. Il mio è usato per controllare un paio di cose e se le condizioni match, poi attivare un allarme. La mia domanda è: devo usare la linea che avevo postato sopra nel mio manifesto? E se sì, quali sono i vantaggi di questa operazione?

  • In quale contesto(attività di servizio, ecc), il ricevitore definito?
  • il Ricevitore è definito nel manifesto, viene chiamato da android AlarmManager utilità.
InformationsquelleAutor Jason | 2010-11-30

 

One Reply
  1. 165

    Con la definizione del vostro ricevitore con android:process=":remote" che, fondamentalmente, eseguire il ricevitore in un altro processo (= VM). Per i tipici casi d’uso, non è necessario eseguire questo in un altro processo, e da quello che vuoi fare può probabilmente eseguire bene in locale (nel tuo APK del processo).

    Lo svantaggio di utilizzare android:process=":remote" è che avete bisogno di ulteriori risorse per l’esecuzione (in questo caso un processo separato). Quando si fa così, sei fondamentalmente a che fare con 2 macchine virtuali, e alcuni modelli come singleton, campi statici non possono più essere condivisi tra l’app e il servizio remoto.

    Il vantaggio di utilizzare android:process=":remote" è che per alcuni casi, potrebbe essere utile per avviare un servizio che permette di mantenere in esecuzione (in un processo a parte) dopo aver arresto l’applicazione, o se si desidera che i client remoti per essere in grado di associare al vostro servizio. Il broadcast receiver non bloccare le applicazioni principali di thread in esecuzione in un processo separato una volta chiamata la onReceive() metodo (tuttavia, ci sono altri modi di attuazione di questo).

    Ho trovato che la maggior parte del tempo, per la maggior parte dei comuni casi d’uso, si può ottenere senza l’uso di android:process=":remote".

    • si potrebbe chiedere quali sono le altre modalità di attuazione di un non-blocking onreceive() il metodo di cui parli wpuld essere ? Io in realtà sono esattamente questo scenario in corso, un metodo onReceive che in realtà fa un bel po ‘ di lavoro e io sono a sospettare che potrebbe essere la causa di alcuni problemi nel mio software…
    • C’è un altro implicito vantaggio che non è menzionato: durante l’esecuzione di un componente in un processo separato, si dispone di una nuova VM heap per l’uso. Quindi nel caso in cui l’applicazione viene eseguita l’memoria intenso operazioni, un processo separato può essere una soluzione per evitare errori Di Memoria.
    • Come si fa a comunicare con un ricevitore ,ho provato communcating via Sharedpreferences, ma che non funziona come il telecomando ricevere la prima copia e nessuno che riesce i dati iniziali

Lascia un commento