Ich habe einen BroadcastReceiver, der von Zeit zu Zeit aufgerufen wird, und ich habe festgestellt, dass viele Leute ihn verwenden
android: process =":remote"
in ihrem Empfänger. Meins wird verwendet, um ein paar Dinge zu überprüfen und wenn die Bedingungen übereinstimmen, aktivieren Sie einen Alarm. Meine Frage ist, ob ich die Zeile verwenden soll, die ich oben in meinem Manifest gepostet habe. Und wenn ja, welche Vorteile hat dies?
Antworten:
Indem Sie Ihren Empfänger mit definieren, führen Sie Ihren Empfänger
android:process=":remote"
grundsätzlich in einem anderen Prozess aus (= VM). Für typische Anwendungsfälle müssen Sie dies nicht in einem anderen Prozess ausführen, und was auch immer Sie tun möchten, kann wahrscheinlich lokal (in Ihrem APK-Prozess) einwandfrei ausgeführt werden.Der Nachteil der Verwendung
android:process=":remote"
besteht darin, dass Sie zusätzliche Ressourcen benötigen, um ausgeführt zu werden (in diesem Fall ein separater Prozess). Dabei handelt es sich im Grunde genommen um 2 VMs, und bei einigen Mustern wie Singletons können statische Felder nicht mehr zwischen Ihrer App und Ihrem Remotedienst geteilt werden.Der Vorteil der Verwendung
android:process=":remote"
besteht darin, dass es in einigen Anwendungsfällen nützlich sein kann, einen Dienst zu starten, der nach dem Herunterfahren Ihrer Anwendung (in einem eigenen Prozess) weiter ausgeführt wird oder wenn Remoteclients gebunden werden sollen zu Ihrem Dienst. Ihr Broadcast-Empfänger blockiert den Hauptthread Ihrer Anwendung nicht, wenn er beim Aufrufen deronReceive()
Methode in einem separaten Prozess ausgeführt wird (es gibt jedoch auch andere Möglichkeiten, dies zu implementieren).Ich habe festgestellt, dass Sie für die meisten gängigen Anwendungsfälle die meiste Zeit ohne Verwendung davonkommen können
android:process=":remote"
.quelle