@@ -28,7 +28,8 @@ class IterableRequest extends AsyncTask<IterableApiRequest, Void, String> {
28
28
static final int MAX_RETRY_COUNT = 3 ;
29
29
30
30
int retryCount = 0 ;
31
- IterableApiRequest retryRequest ;
31
+ IterableApiRequest iterableApiRequest ;
32
+ boolean retryRequest ;
32
33
33
34
/**
34
35
* Sends the given request to Iterable using a HttpUserConnection
@@ -37,12 +38,16 @@ class IterableRequest extends AsyncTask<IterableApiRequest, Void, String> {
37
38
* @return
38
39
*/
39
40
protected String doInBackground (IterableApiRequest ... params ) {
40
- IterableApiRequest iterableApiRequest = params [0 ];
41
+ if (params != null && params .length > 0 ) {
42
+ iterableApiRequest = params [0 ];
43
+ }
41
44
42
- try {
43
- Thread .sleep (RETRY_DELAY *retryCount );
44
- } catch (InterruptedException e ) {
45
- e .printStackTrace ();
45
+ if (retryRequest ) {
46
+ try {
47
+ Thread .sleep (RETRY_DELAY * retryCount );
48
+ } catch (InterruptedException e ) {
49
+ e .printStackTrace ();
50
+ }
46
51
}
47
52
48
53
String requestResult = null ;
@@ -86,14 +91,13 @@ protected String doInBackground(IterableApiRequest... params) {
86
91
String mess = e .getMessage ();
87
92
if (mess .equals (AUTHENTICATION_IO_EXCEPTION )) {
88
93
Log .d (TAG , "Invalid API Key" );
89
- } else
90
- {
91
- retryRequest = iterableApiRequest ;
94
+ } else {
95
+ retryRequest = true ;
92
96
}
93
97
e .printStackTrace ();
94
98
} catch (Exception e ) {
95
99
e .printStackTrace ();
96
- retryRequest = iterableApiRequest ;
100
+ retryRequest = true ;
97
101
} finally {
98
102
if (urlConnection != null ) {
99
103
urlConnection .disconnect ();
@@ -105,23 +109,18 @@ protected String doInBackground(IterableApiRequest... params) {
105
109
106
110
@ Override
107
111
protected void onPostExecute (String s ) {
108
- if (retryRequest != null ) {
109
- attemptRequestRetry ();
112
+ if (retryRequest && retryCount <= MAX_RETRY_COUNT ) {
113
+ IterableRequest request = new IterableRequest ();
114
+ request .setRetryCount (retryCount + 1 );
115
+ request .execute (iterableApiRequest );
110
116
}
111
117
super .onPostExecute (s );
112
118
}
113
119
114
- protected void updateRetryCount (int count ) {
115
- retryCount = count + 1 ;
120
+ protected void setRetryCount (int count ) {
121
+ retryCount = count ;
116
122
}
117
123
118
- private void attemptRequestRetry () {
119
- if (retryCount <= MAX_RETRY_COUNT ) {
120
- IterableRequest request = new IterableRequest ();
121
- request .updateRetryCount (retryCount );
122
- request .execute (retryRequest );
123
- }
124
- }
125
124
}
126
125
127
126
class IterableApiRequest {
0 commit comments