web-dev-qa-db-ja.com

受信機でAndroid:process = ":remote"を使用する必要がありますか?

頻繁に呼び出されるBroadcastReceiverを持っていますが、多くの人が

Android: process =":remote" 

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

68
Jason

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

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

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

ほとんどの場合、ほとんどの一般的なユースケースでは、_Android:process=":remote"_を使用せずに逃げることができます。

162
ddewaele