Samsung S7上的TransactionTooLargeException

时间:2017-12-14 12:23:11

标签: android-notifications samsung-galaxy android-remoteview

我的一个应用程序在Samsung S7上抛出以下异常:

private int getViewIndex (ViewGroup viewGroup, View view)
{
    return viewGroup.indexOfChild(view);
}

这里是第202行的代码:

java.lang.RuntimeException: 
at android.app.NotificationManager.notifyAsUser 
(NotificationManager.java:342)
at android.app.NotificationManager.notify (NotificationManager.java:292)
at android.app.NotificationManager.notify (NotificationManager.java:276)
at 
org.mypapp.test.service.NotificationReceiverRemoteViews.updateNotification 
(NotificationReceiverRemoteViews.java:202)
at org.mypapp.test.service.NotificationReceiverRemoteViews.onReceive 
(NotificationReceiverRemoteViews.java:63)
at android.support.v4.content.LocalBroadcastManager.executePendingBroadcasts 
(LocalBroadcastManager.java:308)
at android.support.v4.content.LocalBroadcastManager.access$000 
(LocalBroadcastManager.java:46)
at android.support.v4.content.LocalBroadcastManager$1.handleMessage 
(LocalBroadcastManager.java:118)
at android.os.Handler.dispatchMessage (Handler.java:102)
at android.os.Looper.loop (Looper.java:154)
at android.app.ActivityThread.main (ActivityThread.java:6642)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run 
(ZygoteInit.java:1468)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1358)
Caused by: android.os.TransactionTooLargeException: 
at android.os.BinderProxy.transactNative (Native Method)
at android.os.BinderProxy.transact (Binder.java:628)
at android.app.INotificationManager$Stub$Proxy.enqueueNotificationWithTag 
(INotificationManager.java:899)
at android.app.NotificationManager.notifyAsUser 
(NotificationManager.java:336)

我也使用三星S7,我从来没有遇到过这个错误。我无法使用ansdroid工作室模拟器重现错误。因此,我不知道如何解决我无法重现的错误。 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

可能的原因是,您在NotificationManager#notify之前更新了RemoteViews实例,而不是重新创建一个实例,从而导致内存泄漏。我在another answer

中描述了这种情况