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()
サービスは、バインドまたは開始、あるいはその両方が可能です。 onStartCommand
とonBind
の実装方法によって異なります。
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);