Сервис: onTaskRemoved не вызывается, если он запущен с bindService
У меня есть служба, в которой был реализован метод onTaskRemoved()
.
Когда служба запускается с помощью startService()
функция onTaskRemoved()
вызывается, когда приложение удаляется из списка последних приложений.
Но если служба запускается с помощью bindService()
, то onTaskRemoved()
никогда не 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()
Ответы
Ответ 1
Служба может быть связана или запущена, или и то, и другое. Это зависит от того, как вы реализуете 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);