2014年3月6日木曜日

Android Service is unbinded and destroyed when bind Activity is finished by back key.

サービスをバインドしたActivityをBack keyで非表示(終了)にするとService#onUnbind()とService#onDestroy()の両方のメソッドが実行されてしまい、サービスが停止してしまう。
(Home keyで非表示にすると両方とも実行されない)

service bind Activity: hide by Home key ---> no problem
---> Service is running

service bind Activity: finish by Back key
---> run Service#onUnbind() and  Service#onDestroy()
---> Service will be terminated.


    
       ↓   (solution)



以下の方法で解決できました。

1. startService()
2. bindService()
3. service bind Activity: finish by Back key
---> run Service#onUnbind(), not run Service#onDestroy()
---> Service is running

4. unbindService()
5. stopService()
---> Service will be terminated


上記のようにstartService()とbindService()を実行して、Back keyでバインドしたActivityを終了するとService#onUnbind()だけが実行され、Service#onDestroy() は実行されなくなり、サービスは停止しなくなる。(1, 2, 3)

サービスを終了するには、unbindService(), stopService()の両方を実行する。(4, 5)



※本当はBack keyでバインドしたActivityを終了しても、Service#onUnbind()とService#onDestroy()が実行されるのを回避する方法が他にあれば良いのですが........。






0 件のコメント:

コメントを投稿