simlar-android icon indicating copy to clipboard operation
simlar-android copied to clipboard

Avoid synchronous operations implementation

Open amazuerar opened this issue 4 years ago • 0 comments

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, synchronous requests are 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:

  1. See: https://developer.android.com/training/basics/network-ops/connecting
  2. Consider alternative libraries (e.g., Retrofit) handling asynchronous operations

Potential Code Location with synchronous operations:

https://github.com/simlar/simlar-android/blob/6af259d2c9c52dba69f508878679e21c77c484d4/app/src/main/java/org/simlar/https/HttpsPost.java#L85

amazuerar avatar Aug 15 '21 12:08 amazuerar