@@ -510,22 +510,25 @@ private RequestsWithEncoding getRequestsWithEncodedStringForErrors() {
510510 return requestsWithEncoding ;
511511 }
512512
513- private RequestsWithEncoding getRequestsWithEncodedStringStoredRequests () {
514- List <Map <String , Object >> unsentRequests ;
515- List <Map <String , Object >> requestsToSend ;
516- String jsonEncodedRequestsToSend ;
517-
518- RequestsWithEncoding requestsWithEncoding = new RequestsWithEncoding ();
519- unsentRequests = getUnsentRequests ();
520- requestsToSend = removeIrrelevantBackgroundStartRequests (unsentRequests );
521- jsonEncodedRequestsToSend = jsonEncodeUnsentRequests (unsentRequests );
522-
523-
524- requestsWithEncoding .unsentRequests = unsentRequests ;
525- requestsWithEncoding .requestsToSend = requestsToSend ;
526- requestsWithEncoding .jsonEncodedString = jsonEncodedRequestsToSend ;
527-
528- return requestsWithEncoding ;
513+ private RequestsWithEncoding getRequestsWithEncodedStringStoredRequests (double fraction ) {
514+ try {
515+ List <Map <String , Object >> unsentRequests ;
516+ List <Map <String , Object >> requestsToSend ;
517+ String jsonEncodedRequestsToSend ;
518+ RequestsWithEncoding requestsWithEncoding = new RequestsWithEncoding ();
519+
520+ unsentRequests = getUnsentRequests (fraction );
521+ requestsToSend = removeIrrelevantBackgroundStartRequests (unsentRequests );
522+ jsonEncodedRequestsToSend = jsonEncodeUnsentRequests (unsentRequests );
523+
524+ requestsWithEncoding .unsentRequests = unsentRequests ;
525+ requestsWithEncoding .requestsToSend = requestsToSend ;
526+ requestsWithEncoding .jsonEncodedString = jsonEncodedRequestsToSend ;
527+
528+ return requestsWithEncoding ;
529+ } catch (OutOfMemoryError E ) {
530+ return getRequestsWithEncodedStringStoredRequests (0.1 * fraction );
531+ }
529532 }
530533
531534 private RequestsWithEncoding getRequestsWithEncodedString () {
@@ -534,7 +537,7 @@ private RequestsWithEncoding getRequestsWithEncodedString() {
534537 if (localErrors .size () != 0 ) {
535538 requestsWithEncoding = getRequestsWithEncodedStringForErrors ();
536539 } else {
537- requestsWithEncoding = getRequestsWithEncodedStringStoredRequests ()
540+ requestsWithEncoding = getRequestsWithEncodedStringStoredRequests (1.0 );
538541 }
539542
540543 return requestsWithEncoding ;
@@ -649,6 +652,10 @@ static void deleteSentRequests(int requestsCount) {
649652 }
650653
651654 private static List <Map <String , Object >> getUnsentRequests () {
655+ return getUnsentRequests (1.0 );
656+ }
657+
658+ private static List <Map <String , Object >> getUnsentRequests (double fraction ) {
652659 List <Map <String , Object >> requestData ;
653660
654661 synchronized (Request .class ) {
@@ -657,8 +664,8 @@ private static List<Map<String, Object>> getUnsentRequests() {
657664 SharedPreferences preferences = context .getSharedPreferences (
658665 LEANPLUM , Context .MODE_PRIVATE );
659666 SharedPreferences .Editor editor = preferences .edit ();
660-
661- requestData = LeanplumEventDataManager .getEvents (MAX_EVENTS_PER_API_CALL );
667+ int count = ( int ) ( fraction * MAX_EVENTS_PER_API_CALL );
668+ requestData = LeanplumEventDataManager .getEvents (count );
662669 editor .remove (Constants .Defaults .UUID_KEY );
663670 SharedPreferencesUtil .commitChanges (editor );
664671 }
0 commit comments