こんにちは。
自分も以前に同様の疑問を抱き、ちょろっと調べたことがありました。
結局はっきりとした理由は分かりませんでしたが、
stackoverflowにて同じような「多くの人が :remote 付けてるけど必要あんの?」という投稿があったのを見つけました。
ここで回答者のddewaeleさんは、別プロセスにすることで利点と欠点それぞれあるけども、
通常使う分には別プロセスにする必要はないよと回答しており、その回答は多くの賛同を集めていました。
これを見て自分は Receiverには":remote" はよっぽどの理由がなければ特に付けなくていいんだなと思っています。
また、AlarmManagerを説明しているサイトで android:process=":remote" を記述しているところが多いのは、
AlarmManagerを使うSDK付属のサンプルソース(ApiDemos)で上記の記述があったので、
とりあえずそれに則って記述したのだと思います。
よって、説明を書いた人はなぜremoteを記述する必要があるのかは恐らく分かっていないと思われます。
つまるところ、元凶?のAlarmManagerのサンプルソースを書いた人の意図がどうだったのかになるんでしょうが、
一過性の処理だしメインスレッドをブロックしないよう、remoteつけちゃえと軽い気持ちで付けたんだと自分は勝手に思っとります。
以上、多分に間違っている可能性はありますが、一応ご参考までに。
2013年4月24日水曜日 18時08分54秒 UTC+9 Naoya Morikawa:
AndroidManifest.xml に記述する <receiver> 内の android:process にて疑問が湧きましたので投稿させて頂きます。
AlarmManager にセットしたアラームを処理するためには、マニフェスト内に以下の様なタグを記述するかと思います。
<receiver
android:name=".AlarmReceiver"
android:process=":remote" />
android:process については、コロンで始まる文字列を設定しておくとアラームの処理を別プロセスにて行うようになると認識しております。
この別プロセスについてなのですが、AlarmManager について説明されているサイトをいくつか拝見したところ、暗黙的に android:process=":remote" を記述されている所が多く見受けられました。しかし、レシーバ内の処理を見ても、特に別プロセスで処理を行わなければならないようなロジックは組まれておりません。
AlarmManager を使用する場合、別プロセスにて行わなければならないような特別な理由が何かあるのでしょうか?