81

頻繁に呼び出される BroadcastReceiver があり、多くの人が使用していることに気付きました

android: process =":remote" 

彼らの受信機で。私のものはいくつかのことをチェックするために使用され、条件が一致する場合はアラームをアクティブにします。私の質問は、マニフェストで上に投稿した行を使用する必要がありますか? もしそうなら、そうすることの利点は何ですか?

4

1 に答える 1

176

でレシーバーを定義することにより、android:process=":remote"基本的にレシーバーを別のプロセス (= VM) で実行します。典型的なユースケースでは、これを別のプロセスで実行する必要はなく、やりたいことはおそらくローカルで (APK プロセスで) うまく実行できます。

使用の欠点はandroid:process=":remote"、実行するために追加のリソースが必要になることです (この場合は別のプロセス)。そうする場合、基本的には 2 つの VM を扱っており、シングルトンのようないくつかのパターンでは、アプリとリモート サービスの間で静的フィールドを共有できなくなります。

を使用する利点はandroid:process=":remote"、一部のユースケースでは、アプリケーションをシャットダウンした後、またはリモート クライアントをバインドできるようにする場合に、(独自のプロセスで) 実行し続けるサービスを開始すると便利な場合があることです。あなたのサービスに。メソッドの呼び出し時に別のプロセスで実行されている場合、ブロードキャスト レシーバーはアプリケーションのメイン スレッドをブロックしませんonReceive()(ただし、これを実装する方法は他にもあります)。

ほとんどの場合、ほとんどの一般的なユースケースでは、を使用せずに済むことがわかりましたandroid:process=":remote"

于 2010-12-10T22:20:38.033 に答える