Skip to content

Commit bfbc1e9

Browse files
authored
Merge pull request #179 from Unity-Technologies/android-handle-outofmemory
Handle outofmemory errors in serialization
2 parents fe3150a + 1408be6 commit bfbc1e9

File tree

1 file changed

+20
-4
lines changed

1 file changed

+20
-4
lines changed

com.unity.mobile.notifications/Runtime/Android/Plugins/com/unity/androidnotifications/UnityNotificationUtilities.java

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,8 @@ private static boolean serializeNotificationParcel(Intent intent, DataOutputStre
113113
return true;
114114
} catch (Exception e) {
115115
Log.e(TAG_UNITY, "Failed to serialize notification as Parcel", e);
116+
} catch (OutOfMemoryError e) {
117+
Log.e(TAG_UNITY, "Failed to serialize notification as Parcel", e);
116118
}
117119

118120
return false;
@@ -186,8 +188,11 @@ private static byte[] serializeParcelable(Parcelable obj) {
186188
return result;
187189
} catch (Exception e) {
188190
Log.e(TAG_UNITY, "Failed to serialize Parcelable", e);
189-
return null;
191+
} catch (OutOfMemoryError e) {
192+
Log.e(TAG_UNITY, "Failed to serialize Parcelable", e);
190193
}
194+
195+
return null;
191196
}
192197

193198
protected static Object deserializeNotification(Context context, SharedPreferences prefs) {
@@ -251,8 +256,11 @@ private static Notification deserializeNotificationParcelable(DataInputStream in
251256
return notification;
252257
} catch (Exception e) {
253258
Log.e(TAG_UNITY, "Failed to deserialize notification intent", e);
254-
return null;
259+
} catch (OutOfMemoryError e) {
260+
Log.e(TAG_UNITY, "Failed to deserialize notification intent", e);
255261
}
262+
263+
return null;
256264
}
257265

258266
private static Notification.Builder deserializeNotificationCustom(DataInputStream in) {
@@ -354,8 +362,11 @@ private static Notification.Builder deserializeNotificationCustom(DataInputStrea
354362
return builder;
355363
} catch (Exception e) {
356364
Log.e(TAG_UNITY, "Failed to deserialize notification", e);
357-
return null;
365+
} catch (OutOfMemoryError e) {
366+
Log.e(TAG_UNITY, "Failed to deserialize notification", e);
358367
}
368+
369+
return null;
359370
}
360371

361372
private static Notification.Builder deserializedFromOldIntent(byte[] bytes) {
@@ -414,8 +425,11 @@ private static Notification.Builder deserializedFromOldIntent(byte[] bytes) {
414425
return builder;
415426
} catch (Exception e) {
416427
Log.e(TAG_UNITY, "Failed to deserialize old style notification", e);
417-
return null;
428+
} catch (OutOfMemoryError e) {
429+
Log.e(TAG_UNITY, "Failed to deserialize old style notification", e);
418430
}
431+
432+
return null;
419433
}
420434

421435
private static String deserializeString(DataInputStream in) throws IOException {
@@ -449,6 +463,8 @@ private static <T extends Parcelable> T deserializeParcelable(DataInputStream in
449463
}
450464
} catch (Exception e) {
451465
Log.e(TAG_UNITY, "Failed to deserialize parcelable", e);
466+
} catch (OutOfMemoryError e) {
467+
Log.e(TAG_UNITY, "Failed to deserialize parcelable", e);
452468
}
453469

454470
return null;

0 commit comments

Comments
 (0)