Android:process =“:remote”をレシーバーに使用する必要がありますか?
-
29-09-2019 - |
質問
私は頻繁に呼ばれる放送局を持っています、そして私は多くの人々が使用していることに気づきました
android: process =":remote"
レシーバーで。鉱山はいくつかのものを確認するために使用され、条件が一致する場合はアラームをアクティブにします。私の質問は、上記のマニフェストに投稿した行を使用する必要があることです。もしそうなら、そうすることの利点は何ですか?
解決
レシーバーを定義することにより android:process=":remote"
基本的に、レシーバーを別のプロセス(= VM)で実行します。典型的なユースケースの場合、これを別のプロセスで実行する必要はありません。したいことは、おそらく(APKプロセスで)ローカルでうまく実行される可能性があります。
使用の欠点 android:process=":remote"
実行するには追加のリソースが必要です(この場合は別のプロセス)。そうすることで、基本的に2つのVMを扱っており、Singletonsのようないくつかのパターンを扱っているため、静的フィールドはアプリとリモートサービス間で共有できなくなります。
使用の利点 android:process=":remote"
一部のユースケースでは、アプリケーションをシャットダウンした後、またはリモートクライアントがサービスにバインドできるようにしたい場合(独自のプロセスで)実行を続けるサービスを開始するのが便利かもしれません。ブロードキャストレシーバーは、電話をかけたときに別のプロセスで実行するときにアプリケーションのメインスレッドをブロックしません onReceive()
方法(ただし、これを実装する他の方法があります)。
ほとんどの場合、最も一般的なユースケースでは、使用せずに逃げることができることがわかりました android:process=":remote"
.