Skip to content
This repository has been archived by the owner on Oct 15, 2022. It is now read-only.

Synchronous operations are being implemented #107

Open
amazuerar opened this issue Aug 15, 2021 · 0 comments
Open

Synchronous operations are being implemented #107

amazuerar opened this issue Aug 15, 2021 · 0 comments

Comments

@amazuerar
Copy link

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:

try (Response response = client.newCall(request).execute()) {

try (Response response = client.newCall(request).execute()) {

try (Response response = client.newCall(request).execute()) {

try (Response response = client.newCall(request).execute()) {

try (Response response = client.newCall(request).execute()) {

try (Response response = client.newCall(request).execute()) {

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant