サービスをバインドした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()が実行されるのを回避する方法が他にあれば良いのですが........。