Domanda

Ho un BroadcastReceiver che si chiama di tanto in tanto, e ho notato che molte persone usano

android: process =":remote" 

nella loro ricevitore. Il mio è utilizzato per controllare un paio di cose e se le condizioni corrispondono quindi attivare un allarme. La mia domanda è devo usare la linea che avevo postato sopra nella mia manifesta? E se sì, quali sono i vantaggi di fare così?

È stato utile?

Soluzione

Con la definizione di ricevitore con android:process=":remote" che, fondamentalmente, eseguire il ricevitore in un processo diverso (= VM). Per tipici casi d'uso, non è necessario eseguire questo in un processo diverso, e tutto ciò che si vuole fare probabilmente può funzionare bene a livello locale (nel vostro processo APK).

Lo svantaggio di usare android:process=":remote" è che avete bisogno di risorse aggiuntive per l'esecuzione (in questo caso un processo separato). Nel fare ciò, si sta fondamentalmente trattare con 2 macchine virtuali, e alcuni modelli come single, i campi statici non è più possibile essere condivisi tra la vostra applicazione e il servizio remoto.

Il vantaggio di utilizzare android:process=":remote" è che per alcuni casi d'uso, potrebbe essere utile per avviare un servizio che non mancherà di tenere a correre (nel proprio processo) dopo aver arresto'VE la vostra applicazione, o se si desidera che i client remoti a essere in grado di legarsi al vostro servizio. Il ricevitore di broadcast non bloccherà le applicazioni thread principale durante l'esecuzione in un processo separato sulla chiamata al metodo onReceive() (tuttavia, ci sono altri modi di attuazione del presente).

Ho trovato che la maggior parte del tempo, per la maggior parte casi d'uso comune, è possibile ottenere via senza usare android:process=":remote".

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top