Skip to content

Commit 3ac8d50

Browse files
committed
Fixed threading issues in BaseJsonHttpResponseHandler and JsonHttpResponseHandler
1 parent eae48b8 commit 3ac8d50

File tree

2 files changed

+24
-8
lines changed

2 files changed

+24
-8
lines changed

library/src/main/java/com/loopj/android/http/BaseJsonHttpResponseHandler.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ public BaseJsonHttpResponseHandler(String encoding) {
7474
@Override
7575
public final void onSuccess(final int statusCode, final Header[] headers, final String responseString) {
7676
if (statusCode != HttpStatus.SC_NO_CONTENT) {
77-
new Thread(new Runnable() {
77+
Runnable parser = new Runnable() {
7878
@Override
7979
public void run() {
8080
try {
@@ -95,7 +95,11 @@ public void run() {
9595
});
9696
}
9797
}
98-
}).start();
98+
};
99+
if (!getUseSynchronousMode())
100+
new Thread(parser).start();
101+
else // In synchronous mode everything should be run on one thread
102+
parser.run();
99103
} else {
100104
onSuccess(statusCode, headers, null, null);
101105
}
@@ -104,7 +108,7 @@ public void run() {
104108
@Override
105109
public final void onFailure(final int statusCode, final Header[] headers, final String responseString, final Throwable throwable) {
106110
if (responseString != null) {
107-
new Thread(new Runnable() {
111+
Runnable parser = new Runnable() {
108112
@Override
109113
public void run() {
110114
try {
@@ -125,7 +129,11 @@ public void run() {
125129
});
126130
}
127131
}
128-
}).start();
132+
};
133+
if (!getUseSynchronousMode())
134+
new Thread(parser).start();
135+
else // In synchronous mode everything should be run on one thread
136+
parser.run();
129137
} else {
130138
onFailure(statusCode, headers, throwable, null, null);
131139
}

library/src/main/java/com/loopj/android/http/JsonHttpResponseHandler.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ public void onSuccess(int statusCode, Header[] headers, String responseString) {
113113
@Override
114114
public final void onSuccess(final int statusCode, final Header[] headers, final byte[] responseBytes) {
115115
if (statusCode != HttpStatus.SC_NO_CONTENT) {
116-
new Thread(new Runnable() {
116+
Runnable parser = new Runnable() {
117117
@Override
118118
public void run() {
119119
try {
@@ -142,7 +142,11 @@ public void run() {
142142
});
143143
}
144144
}
145-
}).start();
145+
};
146+
if (!getUseSynchronousMode())
147+
new Thread(parser).start();
148+
else // In synchronous mode everything should be run on one thread
149+
parser.run();
146150
} else {
147151
onSuccess(statusCode, headers, new JSONObject());
148152
}
@@ -151,7 +155,7 @@ public void run() {
151155
@Override
152156
public final void onFailure(final int statusCode, final Header[] headers, final byte[] responseBytes, final Throwable throwable) {
153157
if (responseBytes != null) {
154-
new Thread(new Runnable() {
158+
Runnable parser = new Runnable() {
155159
@Override
156160
public void run() {
157161
try {
@@ -181,7 +185,11 @@ public void run() {
181185

182186
}
183187
}
184-
}).start();
188+
};
189+
if (!getUseSynchronousMode())
190+
new Thread(parser).start();
191+
else // In synchronous mode everything should be run on one thread
192+
parser.run();
185193
} else {
186194
Log.v(LOG_TAG, "response body is null, calling onFailure(Throwable, JSONObject)");
187195
onFailure(statusCode, headers, throwable, (JSONObject) null);

0 commit comments

Comments
 (0)