nvllsvm / Audinaut

A Subsonic client for Android
GNU General Public License v3.0
134 stars 18 forks source link

Synchronous operations are being implemented #107

Open amazuerar opened 3 years ago

amazuerar commented 3 years ago

Dear Developer!

My name is Alejandro Mazuera-Rozo, I am a PhD Student at Universidad de los Andes, and at Università della Svizzera italiana. I am part of a research on the usage of network libraries within Android apps. As result of this we identified some code locations that might have network related problems.

In this case, we address the code locations that are related to a potential issue because of implementing synchronous operations. As you might know, using the execute() method on a call object will perform a synchronous request which is not recommended and its usage is discouraged.

  1. In synchronous operations, tasks are performed one at a time and only when one is completed, the following is unblocked.

  2. In asynchronous operations, you can move to another task before the previous one finishes, allowing you to deal with multiple requests simultaneously.

Moreover, by avoiding this approach, it is less likely to perform network operations on the main thread. Android requires you to perform network operations on a thread other than the main UI thread; a NetworkOnMainThreadException is thrown otherwise.

In order to address this issue we recommend you to visit:

  1. https://developer.android.com/training/basics/network-ops/connecting

Potential Code Location with synchronous operations:

https://github.com/nvllsvm/Audinaut/blob/aa4c877046f328b09a48ca7bc52185cbb9f19e86/app/src/main/java/net/nullsum/audinaut/service/RESTMusicService.java#L84

https://github.com/nvllsvm/Audinaut/blob/aa4c877046f328b09a48ca7bc52185cbb9f19e86/app/src/main/java/net/nullsum/audinaut/service/RESTMusicService.java#L285

https://github.com/nvllsvm/Audinaut/blob/aa4c877046f328b09a48ca7bc52185cbb9f19e86/app/src/main/java/net/nullsum/audinaut/service/RESTMusicService.java#L369

https://github.com/nvllsvm/Audinaut/blob/aa4c877046f328b09a48ca7bc52185cbb9f19e86/app/src/main/java/net/nullsum/audinaut/service/RESTMusicService.java#L417 https://github.com/nvllsvm/Audinaut/blob/aa4c877046f328b09a48ca7bc52185cbb9f19e86/app/src/main/java/net/nullsum/audinaut/service/RESTMusicService.java#L534

https://github.com/nvllsvm/Audinaut/blob/aa4c877046f328b09a48ca7bc52185cbb9f19e86/app/src/main/java/net/nullsum/audinaut/service/RESTMusicService.java#L561