In the second piece of code you have to call the attribute locationListener
prior to calling the methods of the interface.
In the first piece of code you can access the interface methods directly.
So if you know that every method call costs cpu time then to implement it directly in the class rather than putting it as an attribute would be beneficial.
In this case you have 1 reference to BackgroundService
with which you can access methods of LocationListener
public class BackgroundService extends Service implements LocationListener {}
In this case you have 2 references, one to BackgroundService and another to locationListener
public class BackgroundService extends Service {
private LocationListener locationListener = new LocationListener() {};
}
But then again, if your program doesnt have critical time limits, it doesnt really matter.
Above all its important that your code is readable.
I hope that answers your question.