送信した複数のBroadCastがonReceiveで同時に処理される

426 views
Skip to first unread message

中村達也

unread,
Nov 23, 2011, 3:13:31 AM11/23/11
to 日本Androidの会
GPS通知を行うアプリを作成しています。
Activityにはアプリケーションの状態を通知するためのTextVIewがあり、Service内で行っている位置情報取得の状態を
BroadcastによってActivityに送信し、TextViewをリアルタイムに更新しようと考えました。
表示をしたいのは以下の4つのメッセージです。
1.Location取得中
2.Location取得完了
3.Location情報 送信中
4.Location情報 送信完了

試しにService内の1メソッドに上記のメッセージをsendBroadcastするコードを書いたのですが
メソッド内のsendBroadcastが全て処理されるまで、ActivityのonReceiveが呼び出されないようで、
画面の表示は「1→2→3→4」と間をあけた表示ではなく、「1→4」となっています。
(onReceiveで1→2→3→4を同じタイミングで実行してしまっている)

それぞれのsendBroadcastを、その都度onReceiveに処理させるには何かしなければいけませんか?
あるいは、ServiceからActivityのTextViewに対して、リアルタイムに変更をかけるにはBroadcastではいけないのでしょう
か?

知恵をお貸しください。


awwa

unread,
Nov 23, 2011, 3:47:43 AM11/23/11
to android-g...@googlegroups.com

あわと申します。

特にbroadcastする理由がなければ、activityからserviceにbindserviceして、serviceからcallbackさせる方法はどうでしょうか?

ではでは。

2011/11/23 17:14 "中村達也" <hat...@gmail.com>:
--
このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。

中村達也

unread,
Nov 23, 2011, 5:59:19 AM11/23/11
to 日本Androidの会
あわ様、返信ありがとございます。
serviceからcallbackさせるということは、BroadcastではなくAIDLによるプロセス間通信を行うという認識であっていますでし
ょうか?


On 11月23日, 午後5:47, awwa <awwa...@gmail.com> wrote:
> あわと申します。
>
> 特にbroadcastする理由がなければ、activityからserviceにbindserviceして、serviceからcallbackさせる方法-はどうでしょうか?
>
> ではでは。
> 2011/11/23 17:14 "中村達也" <hath...@gmail.com>:


>
>
>
> > GPS通知を行うアプリを作成しています。
> > Activityにはアプリケーションの状態を通知するためのTextVIewがあり、Service内で行っている位置情報取得の状態を
> > BroadcastによってActivityに送信し、TextViewをリアルタイムに更新しようと考えました。
> > 表示をしたいのは以下の4つのメッセージです。
> > 1.Location取得中
> > 2.Location取得完了
> > 3.Location情報 送信中
> > 4.Location情報 送信完了
>
> > 試しにService内の1メソッドに上記のメッセージをsendBroadcastするコードを書いたのですが
> > メソッド内のsendBroadcastが全て処理されるまで、ActivityのonReceiveが呼び出されないようで、
> > 画面の表示は「1→2→3→4」と間をあけた表示ではなく、「1→4」となっています。
> > (onReceiveで1→2→3→4を同じタイミングで実行してしまっている)
>
> > それぞれのsendBroadcastを、その都度onReceiveに処理させるには何かしなければいけませんか?
> > あるいは、ServiceからActivityのTextViewに対して、リアルタイムに変更をかけるにはBroadcastではいけないのでしょう
> > か?
>
> > 知恵をお貸しください。
>
> > --
> > このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> > このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。

> > このグループから退会するには、android-group-j...@googlegroups.comにメールを送信してくださ-い。
> > 詳細については、http://groups.google.com/group/android-group-japan?hl=jaからこのグループにアクセスしてください。- 引用テキストを表示しない -
>
> - 引用テキストを表示 -

awwa

unread,
Nov 24, 2011, 1:08:32 AM11/24/11
to android-g...@googlegroups.com

中村さん

そうです。
その認識です。

2011/11/23 19:59 "中村達也" <hat...@gmail.com>:

kacodama

unread,
Nov 24, 2011, 3:55:25 AM11/24/11
to 日本Androidの会
外しているかも知れませんが。
serviceといえど、特に指定しないとアプリのメインプロセスで動いています。なので、
>試しにService内の1メソッドに上記のメッセージをsendBroadcastするコードを書いたのですが
上記実装ですと、Service内のそのメソッドが終わるまで、Activity(を保有するメインプロセス)は他の処理を実行できないせいではないか
と思うのですが・・・
Service内の処理を別スレッド化するか、awwaさんのおっしゃるとおり、Serviceが別プロセスになるようにしなければならないかと思いま
す。

On 11月24日, 午後3:08, awwa <awwa...@gmail.com> wrote:
> 中村さん
>
> そうです。
> その認識です。
> 2011/11/23 19:59 "中村達也" <hath...@gmail.com>:
Reply all
Reply to author
Forward
0 new messages