web-dev-qa-db-ja.com

サービス:bindServiceで開始した場合、onTaskRemovedは呼び出されません

onTaskRemoved()メソッドが実装されたサービスがあります。
サービスがstartService()で開始されると、アプリがスワイプによって最近のアプリリストから削除されたときに関数onTaskRemoved()が呼び出されます。

ただし、サービスがbindService()で開始された場合、onTaskRemoved()は呼び出されません。

アプリがonTaskRemoved()で開始された後、スワイプによって最近のアプリリストからアプリが削除されたときに、サービス呼び出しをbindService()にするにはどうすればよいですか?

Androidは、次のライフサイクルメソッドで開始した場合に呼び出します。

1. bindService():
Activity﹕ onCreate()
CustomService﹕ onCreate()
CustomService﹕ onStart()
CustomService﹕ onStartCommand()
CustomService﹕ onBind()
// Here we swipe to remove app from recent-apps-list
CustomService﹕ onTrimMemory()

2. startService():
ActivityA﹕ onCreate()
CustomService﹕ onCreate()
CustomService﹕ onStart()
CustomService﹕ onStartCommand()
CustomService﹕ onBind()
// Swipe to remove app from recent-apps-list
CustomService﹕ onTrimMemory()
CustomService﹕ onTaskRemoved() // <===== 
CustomService﹕ onUnbind()
18
surlac

サービスは、バインドまたは開始、あるいはその両方が可能です。 onStartCommandonBindの実装方法によって異なります。

http://developer.Android.com/guide/components/services.html

ただし、サービスでIBinderを介してクライアントと対話することの両方を実行する場合は、サービスを開始してからバインドするだけです。

startService(new Intent(context, CustomerService.class));
// Bind to the service
bindService(new Intent(context, CustomerService.class),
                        mConnection, Context.BIND_AUTO_CREATE);
14
danny117