Serviceから任意のActivityを終了させたいのです。

4,681 views
Skip to first unread message

eryngii.mori

unread,
Feb 18, 2011, 5:11:08 AM2/18/11
to 日本Androidの会
自分で作ったpackageの中でServiceからActivityを起動させた後に
再び同じServiceからActivityを終了させたいときはどうすればよろしいでしょうか?

試しにServiceからputExtraで値を渡してAcitivityで受け取り終了させてみようと
思いましたが失敗いたしました。

Yasuharu Kasai

unread,
Feb 18, 2011, 6:10:13 AM2/18/11
to android-g...@googlegroups.com
笠井です。

以下の2つの方法のいずれかでどうでしょうか?

1つは、ServiceからActivityへAIDLによるプロセス間通信でCallbackするというもの。
Callbackメソッドの処理にfinish()を使ってActivityを終了させる。

もう1つはServiceからbroadcastを送信してActivityで受けるというもの。
BroadcastReceiverの処理にfinish()を使ってActivityを終了させる。

パンテオン・モバイル・システムズ株式会社
笠井


2011年2月18日19:11 eryngii.mori <eryngi...@gmail.com>:
自分で作ったpackageの中でServiceからActivityを起動させた後に
再び同じServiceからActivityを終了させたいときはどうすればよろしいでしょうか?

試しにServiceからputExtraで値を渡してAcitivityで受け取り終了させてみようと
思いましたが失敗いたしました。

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


eryngii.mori

unread,
Feb 18, 2011, 9:31:19 AM2/18/11
to 日本Androidの会
ありがとうございます。終了することができました。
ただ、以下のようなエラー文が出てしまうのですが皆目検討が付きません。
脱線してしまいますが他のメソッドで終了処理を行っても
同じようなエラーが発生したします。

02-18 23:26:19.396: ERROR/ActivityThread(1224): Activity
com.adamrocker.android.orec2dm.OreC2DMView has leaked IntentReceiver
com.adamrocker.android.orec2dm.OreC2DMView$mainReceiver@43273958 that
was originally registered here. Are you missing a call to
unregisterReceiver()?
02-18 23:26:19.396: ERROR/ActivityThread(1224):
android.app.IntentReceiverLeaked: Activity
com.adamrocker.android.orec2dm.OreC2DMView has leaked IntentReceiver
com.adamrocker.android.orec2dm.OreC2DMView$mainReceiver@43273958 that
was originally registered here. Are you missing a call to
unregisterReceiver()?
02-18 23:26:19.396: ERROR/ActivityThread(1224): at
android.app.ActivityThread$PackageInfo
$ReceiverDispatcher.<init>(ActivityThread.java:748)
02-18 23:26:19.396: ERROR/ActivityThread(1224): at
android.app.ActivityThread
$PackageInfo.getReceiverDispatcher(ActivityThread.java:576)
02-18 23:26:19.396: ERROR/ActivityThread(1224): at
android.app.ApplicationContext.registerReceiverInternal(ApplicationContext.java:
770)
02-18 23:26:19.396: ERROR/ActivityThread(1224): at
android.app.ApplicationContext.registerReceiver(ApplicationContext.java:
757)
02-18 23:26:19.396: ERROR/ActivityThread(1224): at
android.app.ApplicationContext.registerReceiver(ApplicationContext.java:
751)
02-18 23:26:19.396: ERROR/ActivityThread(1224): at
android.content.ContextWrapper.registerReceiver(ContextWrapper.java:
290)
02-18 23:26:19.396: ERROR/ActivityThread(1224): at
com.adamrocker.android.orec2dm.OreC2DMView.onCreate(OreC2DMView.java:
46)
02-18 23:26:19.396: ERROR/ActivityThread(1224): at
android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:
1123)
02-18 23:26:19.396: ERROR/ActivityThread(1224): at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:
2364)
02-18 23:26:19.396: ERROR/ActivityThread(1224): at
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:
2417)
02-18 23:26:19.396: ERROR/ActivityThread(1224): at
android.app.ActivityThread.access$2100(ActivityThread.java:116)
02-18 23:26:19.396: ERROR/ActivityThread(1224): at
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
02-18 23:26:19.396: ERROR/ActivityThread(1224): at
android.os.Handler.dispatchMessage(Handler.java:99)
02-18 23:26:19.396: ERROR/ActivityThread(1224): at
android.os.Looper.loop(Looper.java:123)
02-18 23:26:19.396: ERROR/ActivityThread(1224): at
android.app.ActivityThread.main(ActivityThread.java:4203)
02-18 23:26:19.396: ERROR/ActivityThread(1224): at
java.lang.reflect.Method.invokeNative(Native Method)
02-18 23:26:19.396: ERROR/ActivityThread(1224): at
java.lang.reflect.Method.invoke(Method.java:521)
02-18 23:26:19.396: ERROR/ActivityThread(1224): at
com.android.internal.os.ZygoteInit
$MethodAndArgsCaller.run(ZygoteInit.java:791)
02-18 23:26:19.396: ERROR/ActivityThread(1224): at
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
02-18 23:26:19.396: ERROR/ActivityThread(1224): at
dalvik.system.NativeStart.main(Native Method)

度々質問いたしまして申し訳ありません。

On 2月18日, 午後8:10, Yasuharu Kasai <pantheon.mob...@gmail.com> wrote:
> 笠井です。
>
> 以下の2つの方法のいずれかでどうでしょうか?
>
> 1つは、ServiceからActivityへAIDLによるプロセス間通信でCallbackするというもの。
> Callbackメソッドの処理にfinish()を使ってActivityを終了させる。
>
> もう1つはServiceからbroadcastを送信してActivityで受けるというもの。
> BroadcastReceiverの処理にfinish()を使ってActivityを終了させる。
>
> パンテオン・モバイル・システムズ株式会社
> 笠井
>
> 2011年2月18日19:11 eryngii.mori <eryngii.m...@gmail.com>:

三浦智

unread,
Feb 18, 2011, 9:46:52 AM2/18/11
to android-g...@googlegroups.com
三浦です。

AIDLのプロセス間通信はやったことないので詳しくないですが、
エラーメッセージに


> was originally registered here. Are you missing a call to
> unregisterReceiver()?

とあるので、unregisterReceiverの呼び忘れ出はないでしょうか?


2011年2月18日23:31 eryngii.mori <eryngi...@gmail.com>:

> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。

Yasuharu Kasai

unread,
Feb 18, 2011, 10:18:55 AM2/18/11
to android-g...@googlegroups.com
笠井です。

broadcastで実装したんですね。

エラーの原因は、三浦さんのおっしゃる通り、unregisterReceiver()を呼んでいないのが原因だと思います。
registerReceiver()でBroadcastReceiverのインスタンスを登録していると思いますが、
終了時にはunregisterReceiver()を呼ぶことにより、解除する必要があります。

パンテオン・モバイル・システムズ株式会社
笠井


2011年2月18日23:46 三浦智 <mur...@gmail.com>:

eryngii.mori

unread,
Feb 21, 2011, 4:29:10 AM2/21/11
to 日本Androidの会
返事が遅れてすみません。
ちょっと気になる点が出てきたのでもう少しお時間をいただきたいです。

On 2月19日, 午前12:18, Yasuharu Kasai <pantheon.mob...@gmail.com> wrote:
> 笠井です。
>
> broadcastで実装したんですね。
>
> エラーの原因は、三浦さんのおっしゃる通り、unregisterReceiver()を呼んでいないのが原因だと思います。
> registerReceiver()でBroadcastReceiverのインスタンスを登録していると思いますが、
> 終了時にはunregisterReceiver()を呼ぶことにより、解除する必要があります。
>
> パンテオン・モバイル・システムズ株式会社
> 笠井
>
> 2011年2月18日23:46 三浦智 <mur...@gmail.com>:
>
> > 三浦です。
>
> > AIDLのプロセス間通信はやったことないので詳しくないですが、
> > エラーメッセージに
> > > was originally registered here. Are you missing a call to
> > > unregisterReceiver()?
> > とあるので、unregisterReceiverの呼び忘れ出はないでしょうか?
>
> > 2011年2月18日23:31 eryngii.mori <eryngii.m...@gmail.com>:

eryngii.mori

unread,
Feb 23, 2011, 7:19:53 AM2/23/11
to 日本Androidの会
三浦様・笠井様ご教授ありがとうございました。
ちょっと
unregisterReceiver(receiver);
をonDestroy()の中に設定してエラーが出てしまいましたが無事解決いたしました。
onDestroy()メソッドを呼び出した所の後に unregisterReceiver(receiver)を設定したらエラーが出ませんでし
た。
本当にありがとうございました。
Reply all
Reply to author
Forward
0 new messages