Read file > play
Spotify
Internet > dl file > convert decrypt > read file > play > remove files after max cache reached
The internet/downloading takes a lot off power.
The filesystem is also in use far more
The encryption takes a lot off cycles as well. The reason that it is there is so it won't be a glorified music piracy software ala napster/kazaa/limewire.
At one point Apple removed indy apps from their store which cached youtube music to file system for offline listening. A nice feature, but music is copyrighted and has a rich history with lawsuits. You can't just stream music, because streaming in this context is same as downloading.
All battery munching things that add up, but which are essential due to the nature off the data.
Furthermore, Spotify needs to run on ios, android, windows, linux and osx.
For this needs far more intricate code than a player for 1 OS. Optimizing individually for each and make it shared platform is no easy task
I agree a lot needs to be better, but there is quite some bias and overlooked factors.