As per Android reference:
Sending data between activities
When sending data via an intent, you should be careful to limit the
data size to a few KB. Sending too much data can cause the system to
throw a TransactionTooLargeException exception.
Also its advisable to use Bundle class to set primitives known to the OS on Intent objects.
And to send composite or complex objects across activities. In such cases, the custom class should implement Parcelable.
Sending data between processes
The Binder transaction buffer has a limited fixed size, currently 1MB,
which is shared by all transactions in progress for the process. Since
this limit is at the process level rather than at the per activity
level, these transactions include all binder transactions in the app
such as onSaveInstanceState, startActivity and any interaction with
the system. When the size limit is exceeded, a
TransactionTooLargeException is thrown.
For the specific case of savedInstanceState, the amount of data should be kept small because the system process needs to hold on to the provided data for as long as the user can ever navigate back to that activity (even if the activity's process is killed). We recommend that you keep saved state to less than 50k of data.
Note: In Android 7.0 (API level 24) and higher, the system throws a TransactionTooLargeException as a runtime exception.