The Android documentation for AppWidgetManager says
The total Bitmap memory used by the RemoteViews object cannot exceed that required
to fill the screen 1.5 times, ie. (screen width x screen height x 4 x 1.5) bytes.
But the documentation for TransactionTooLargeException says:
The Binder transaction buffer has a limited fixed size, currently 1Mb, which is
shared by all transactions in progress for the process.
Almost every Android device on the market has a screen size large enough for its bitmap to exceed 1 MB (for example, 800 x 600 x 4 = 1,920,000 bytes). I looked at the source of the Android platform and didn’t seem to use ashmem with pipes or anything esoteric, just a regular AIDL file and inside RemoteViews Bitmap objects are Parcelable in the usual way (it really popped up on its own code , but it seems that all the Bitmap pixels write to ordinary parcel).
So, how is it possible that Android exceeds the Binder transaction limit? Does onewayit provide the ability to send big data?
source
share