A service will continue to run even if your app is closed. So yes, a service would be the way to go. You can also bind to the service when your app opens so that you can communicate between your service and your app.
Also I want to listen to the next incoming request. So I believe that
I have to use the bind mechanism to re-run through the socket.accept()
code?
You dont necesarily need bind for this. Your service can listen for incoming requests by itself.
Do note however that a service does not run on a seperate thread so if you want to do intensive work, consider spawning a different thread inside the service. You can also use an IntentService which will handle the threading. But you can only run one IntentService so if you need multiple services, a normal Service would be a better choice.
also read:
https://developer.android.com/guide/components/services.html
and: https://developer.android.com/reference/android/app/Service.html
EDIT:
The service can stop itself when the app is closed. If you simply press the home button to switch to another app, the app will only be paused and the service will continue to run. You can however influence the life of the service.
Check: Android Service Stops When App Is Closed