Re: AlarmReceiverを使用する際のandroid:process指定について

2,689 views
Skip to first unread message

ninegates

unread,
Apr 26, 2013, 6:23:56 AM4/26/13
to android-g...@googlegroups.com
こんにちは。

自分も以前に同様の疑問を抱き、ちょろっと調べたことがありました。
結局はっきりとした理由は分かりませんでしたが、
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 を使用する場合、別プロセスにて行わなければならないような特別な理由が何かあるのでしょうか?

Naoya Morikawa

unread,
Apr 26, 2013, 10:35:01 PM4/26/13
to android-g...@googlegroups.com
ninegates様

stackoverflowの投稿も含め、大変参考になりました。

アラームが実行される度に別プロセス分のリソースが確保されてしまうのが気がかりだったのですが、
本来の意味で別プロセスにしたい場合のみ記述するということで特に問題はなさそうですね。

サンプルソースにつきましても大変納得致しました。
SDKに付属しているとなると、理由が明確でなくても、とりあえず記述しておこうとしてしまう気持ちも分かる気がします。
(分からない部分については調べて理解しようとする、という人がもっと増えてくれれば、android を取り巻く技術環境も
向上するのではないかと個人的には思っていますが…)

お忙しい中、ご返信頂き誠にありがとうございました。

2013年4月26日金曜日 19時23分56秒 UTC+9 ninegates:
Reply all
Reply to author
Forward
0 new messages