У меня Service
запускается независимо с активностью с использованием startService()
. Эта служба обрабатывает множество запросов из активности и создает Callable
, а затем добавляет в ThreadPoolExecutor
. Выглядит это так:
private ExecutorService requestExecutor;
private CompletionService<Result> requestHandleService;
@Override
public int onStartCommand(final Intent intent, int flags, int startId) {
// Create new Request Task and submit
Callable<Result> request = new Callable<Result>(){
public Result call() throws Exception {
}
};
requestHandleService.submit(task);
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy(){
super.onDestroy();
Log.d(TAg,"onDestroy service");
try{
if(requestExecutor!= null){
requestExecutor.shutdown();
}
}catch(Exception ex){
Ln.e(ex);
}finally{
requestExecutor= null;
requestHandleService= null;
}
}
Проблема в том, что я хочу, чтобы эта служба работала независимо и параллельно с деятельностью. Таким образом, деятельность не может контролировать, когда ее остановить. Он должен останавливаться только после завершения всех задач.
Я знаю, что есть способ дождаться завершения ThreadPool, но у меня это не сработает, потому что мне не нужно хранить запросы списка. Когда эта служба получает запрос от активности, она должна создать новую задачу и немедленно отправить ее в onStartCommand
.
Есть ли способ решить эту проблему?