如何在通过广播接收器将 JobIntentService 之间的数据传递给活动时防止 TransactionTooLarge 异常
Posted
技术标签:
【中文标题】如何在通过广播接收器将 JobIntentService 之间的数据传递给活动时防止 TransactionTooLarge 异常【英文标题】:How to prevent TransactionTooLarge exception while passing data between JobIntentService to activity via Broadcast receiver 【发布时间】:2020-11-01 13:45:16 【问题描述】:登录页面后,我正在使用 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】:您不能在Intent
中传递“大量数据”。如果您要传递“大量数据”,则需要使用以下方法之一:
public static
变量中,以便应用程序中的所有类都可以访问它(这不是最好的选择,因为应用程序重启会出现问题,但这是最简单的方法)
【讨论】:
以上是关于如何在通过广播接收器将 JobIntentService 之间的数据传递给活动时防止 TransactionTooLarge 异常的主要内容,如果未能解决你的问题,请参考以下文章