1. ホーム
  2. android

[解決済み] 受信機でandroid: process =":remote "を使うべきですか?

2023-07-14 10:39:33

質問

頻繁に呼び出される BroadcastReceiver があるのですが、多くの人が

android: process =":remote" 

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

どのように解決するのですか?

受信機を android:process=":remote" で定義することで、基本的に Receiver を別のプロセス (= VM) で実行することになります。一般的な使用例では、別のプロセスで実行する必要はなく、やりたいことはおそらくローカル (APK プロセス) で問題なく実行できます。

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

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

私は、ほとんどの場合、ほとんどの一般的なユースケースで android:process=":remote" .