Как предотвратить исключение TransactionTooLarge при передаче данных между JobIntentService в активность через широковещательный приемник - PullRequest
0 голосов
/ 12 июля 2020

После входа в систему я загружаю данные с сервера с помощью JobIntentService и передаю данные активности через BroadcastReceiver. Для меньшего количества данных он работает нормально, но когда я работаю с живыми данными, он дает следующее исключение:

Caused by: android.os.TransactionTooLargeException: data parcel size 1450704 bytes
        at android.os.BinderProxy.transactNative(Native Method)
        at android.os.BinderProxy.transact(Binder.java:1127)
        at android.app.IActivityManager$Stub$Proxy.broadcastIntent(IActivityManager.java:3893)
        at android.app.ContextImpl.sendBroadcast(ContextImpl.java:1009)
        at android.content.ContextWrapper.sendBroadcast(ContextWrapper.java:444) 

I passing data like this from service class : 
Intent intent = new Intent(ACTION_CHECK_DOWNLOADSTATUS);
intent.putExtra("response",response);
sendBroadcast(intent);


But it gives TransactionTooLargeException..
How to prevent this?

How do I pass large amount of Data ??

Pls suggest...

1 Ответ

0 голосов
/ 13 июля 2020

Вы не можете передать «большой объем данных» в Intent. Если у вас есть «большой объем данных» для передачи, вам необходимо использовать одно из следующего:

  • Хранить данные в базе данных SQLite
  • Сохранять данные в файле
  • Храните данные в переменной public static, чтобы к ним могли получить доступ все классы в вашем приложении (не лучшая альтернатива, поскольку есть проблемы с перезапуском приложения, но это самый простой метод)
...