• 该怎么做就TransactionTooLargeException

  • 本文关于 安卓android,异常exception
  • CodeGo.net > 该怎么做就TransactionTooLargeException
  •  

    该怎么做就TransactionTooLargeException



    安卓android 异常exception
    我得到了一个应用程序TransactionTooLargeException的错误轨道。之前不重复性和从未有过的。在它说的文档 活页夹交易失败是太大。 远程通话期间,通话和返回值被传为存储在文件夹事务缓冲区包裹对象。如果或返回值过大,以适应在交易缓冲区,则调用将失败,并TransactionTooLargeException将被抛出。 ... 有两种可能的,当一个远程调用抛出TransactionTooLargeException。无论是客户端端无法向其发送请求到服务(最有可能的,如果是太大 CodeGo.net,无法在交易中的缓冲区),或服务无法发送其响应返回给客户端端(最有可能的,如果返回值是太大,以适应在交易缓冲区)。 ... 那么,好吧,我传递或接收超出未知的限制。但在哪里呢? 堆栈轨迹不显示从我的文件什么:
    java.lang.RuntimeException: Adding window failed
    at android.view.ViewRootImpl.setView(ViewRootImpl.java:548)
    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:406)
    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:320)
    at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:152)
    at android.view.Window$LocalWindowManager.addView(Window.java:557)
    at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2897)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
    at android.app.ActivityThread.access$600(ActivityThread.java:139)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1262)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:4977)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    at dalvik.system.NativeStart.main(Native Method)
    Caused by: android.os.TransactionTooLargeException
    at android.os.BinderProxy.transact(Native Method)
    at android.view.IWindowSession$Stub$Proxy.add(IWindowSession.java:569)
    at android.view.ViewRootImpl.setView(ViewRootImpl.java:538)
    ... 16 more
    android.os.TransactionTooLargeException
    at android.os.BinderProxy.transact(Native Method)
    at android.view.IWindowSession$Stub$Proxy.add(IWindowSession.java:569)
    at android.view.ViewRootImpl.setView(ViewRootImpl.java:538)
    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:406)
    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:320)
    at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:152)
    at android.view.Window$LocalWindowManager.addView(Window.java:557)
    at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2897)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
    at android.app.ActivityThread.access$600(ActivityThread.java:139)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1262)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:4977)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    at dalvik.system.NativeStart.main(Native Method)
    
    这似乎与views,所有的窗口/视图线扯上关系?这是如何与远程调用?我怎样才能寻找此错误的原因是什么? 在应用程序中我唯一的WebServices,我是服务类,是WebServices的“远程通话”还是什么别的东西可以是...? 先谢谢了...... P.S.也许这是重要的:安卓版本:4.0.3,设备:HTC One X的
    本文地址 :CodeGo.net/479911/
    -------------------------------------------------------------------------------------------------------------------------
    1. 我遇到过这个问题,我发现,当有大量的服务和应用程序之间交换得到的数据,(这涉及到大量转移的缩略图)。实际数据的大小是大约500KB,和IPC的事务缓冲器的大小设置为1024KB。我不知道为什么它超出了交易缓冲区。 这也可能发生,当你通过额外的意图传递大量的数据 当您在应用程序中获取此异常,请分析你的代码。 你交换大量的服务和应用程序之间的数据? 使用意向共享庞大的数据(例如 CodeGo.net,选择从gallery份额按共享文件的数量庞大,所选择的文件的URI将是意图) 从服务接收的文件 等待android来响应与庞大的数据(例如,getInstalledApplications()时,安装大量的应用程序) 使用applyBatch()与很多操作以待 如何当你得到这个异常处理 如果可能的话,拆分大的操作中小块,例如,而不是调用applyBatch()与1000的操作,与100每个调用它。 服务和应用程序之间不交换大量数据(> 1MB) 我不知道如何做到这一点,但是,不要质疑android,它可以返回大量的数据:-)
    2. 这不是一个明确的答案,但它可能揭示的光TransactionTooLargeException并帮助查明问题。 虽然大多数的答案是指大量传输的数据,我看到这个异常沉重的滚动和缩放之后被抛出顺便说一句,反复打开一个动作条的崩溃发生在拍打的动作吧。 (这是一个自定义映射应用程序) 被传来传去的唯一的数据似乎是从“输入调度”到应用程序的触摸。我觉得这不能合理构成任何接近1 MB中的“事务缓冲区”。 我的应用程序是一个四核心1.6 GHz的设备3线程上运行的heavylifting,保持一个核心的free的UI线程。此外,Android版本:largeHeap,有10 MB的堆的左,拥有房间100 MB留下成长的堆。所以,我不会说这是一个资源问题。 飞机坠毁之前总是这几行:
    W/InputDispatcher( 2271): channel ~ Consumer closed input channel or an error occurred. events=0x9
    E/InputDispatcher( 2271): channel ~ Channel is unrecoverably broken and will be disposed!
    E/JavaBinder(28182): !!! FAILED BINDER TRANSACTION !!!
    
    这是不以该顺序打印,但(据我选中)发生在毫秒级。 和堆栈轨迹自己,为了清楚起见,是因为在这样的问题:
    E/AndroidRuntime(28182): java.lang.RuntimeException: Adding window failed
    ..
    E/AndroidRuntime(28182): Caused by: android.os.TransactionTooLargeException
    
    钻研的android的一个源代码,发现这几行:
    case FAILED_TRANSACTION:
     ALOGE("!!! FAILED BINDER TRANSACTION !!!");
     // TransactionTooLargeException is a checked exception, only throw from certain methods.
     // FIXME: Transaction too large is the most common reason for FAILED_TRANSACTION
     //  but it is not the only one. The Binder driver can return BR_FAILED_REPLY
     //  for other reasons also, such as if the transaction is malformed or
     //  refers to an FD that has been closed. We should change the driver
     //  to enable us to distinguish these cases in the future.
     jniThrowException(env, canThrowRemoteException
       ? "android/os/TransactionTooLargeException"
         : "java/lang/RuntimeException", NULL);
    
    这听起来像我可能打这个函数,如交易失败,其他原因比交易是TooLarge。他们应该有它TransactionTooLargeOrAnotherReasonException。 在此我并没有解决问题,但如果我觉得有用,我会更新这个答案。 更新:原来我的代码泄露的文件描述符,这数量最大化在Linux(通常1024),这似乎已经引发了异常。所以这是一个资源问题,毕竟。我打开验证了这/dev/zero1024导致各种奇怪的异常的用户界面相关的行动,包括上述的异常,甚至SIGSEGV的。显然未能打开文件/套接字没有被处理/报道非常干净整个Android系统。
    3. 我也有此异常的三星S3。 我怀疑2根 你有负载和占用过多使用瘦身 你可绘制从绘制-_dpi文件夹丢失,android会寻找他们绘制,并调整它们,使您的setContentView突然蹿了很多 使用DDMS,看看你的堆,你玩你的应用程序,这将使你的指示在其上的setContentView创造的问题。 我复制所有文件夹中所有的可绘摆脱问题2。 我会在几天之内我找到报到。
    4. 所以这是我们试图通过我们的AIDL接口发送过大的对象的远程服务。该交易大小不能超过1MB。该请求被细分为512KB的单独的块并发送一次一个通过接口.a个残酷的解决方案,但我知道,嘿-其Android:(
    5. 另一种可能 我有这样的开始了自己的活动onResume()!这导致吨交易和电话(Galaxy S2的)freeze(无ANR或任何东西),然后硬复位,这是一种本身就是一个巨大的bug。 这将是有趣的,看看其他的手机使用此代码会发生什么:
    class MyActivity extends Activity
    {
     // ...
     @Override
     void onResume()
     {
      super.onResume()
      startActivity(new Intent(this, MyActivity.class));
     }
    }
    

    6. 请确保你不投入大尺寸Intent对象数据。在我的情况下,我加入了弦乐500K大小,然后开始另一个活动。它总是失败,此异常。我避免活动活动静态变量之间共享数据-你不必把它们发送到意图,然后从它拉。 我有:
    String html = new String();//some string of 500K data.
    Intent intent = new Intent(MainActivity.this, PageWebView.class);
    //this is workaround - I just set static variable and then access it from another activity.
    MainActivity.htmlBody = timelineDb.getHTMLBodyForTweet(tweet);
    //This line was present and it actually failed with the same exception you had.
    //intent.putExtra("com.gladimdim.offtie.webview", html);
    

    7. 最近我也有在与Android的联系方式提供工作遇到一个有趣的案例。 我需要加载的照片从内部通讯录数据库中的联系人,并根据系统架构,所有这些数据都通过查询传递到通讯录提供商。 因为它可以作为一个单独的应用程序-所有类型的数据传输是等粘结剂缓冲这里发挥作用。 我的主要错误是,我并没有关闭Cursor从联系providers得到,使得分配给提供者增加,这夸大了粘结剂的缓冲区,直到我得到吨的blob数据!!!FAILED BINDER TRANSACTION!!!消息在我的LogCat中输出。 所以主要的想法是,当您使用外部内容提供商和有Cursor从他们秒,总是关闭它,当您完成与他们一起工作。
    8. 据了解,该交易缓冲区限制为1MB,而不管设备的函数或应用程序是非常重要的。这个缓冲区与每个API调用你制作和其中一个应用程序当前正在运行的所有事务共享。 我相信它也拥有像包裹和这样(Parcel.obtain())特定对象,所以重要的是要始终与每一个获得()与再循环()。 这个错误可以很容易地发生在API调用返回了大量的数据,即使返回的数据是超过1MB以下(如果其他交易仍在运行)。 例如,PackageManager.getInstalledApplication()调用返回的所有应用程序的安装目录。添加特定标志允许检索了很多额外的数据。这样做很可能会失败,所以它不检索任何额外的数据。和检索这些基于每个应用程序的基础。 然而,呼叫仍可能失败,所以用一个catch围绕着它,并能够在必要时重新尝试是很重要的。 据我所知,有没有解决方法,以这样的问题,除了重试,并确保检索的越好。
    9. 我刚才吃了这个发生在我的应用程序之一今天。这也只发生过一次,并与银河S3。其有趣的是,这只是似乎与更强大的设备逮捕。
    本文标题 :该怎么做就TransactionTooLargeException
    本文地址 :CodeGo.net/479911/
    1. 的Xcode 4.2与iOS 5.0未检测iPhone的iOS 5.1.1
    2. 如何为上传的文件在播放!2使用Scala?
    3. Objective-C的等价的curl要求
    4. 新的必应的API PHP示例不工作
    5. 需要找到子元素从Python列表
    6. PhoneGap的插件言行诡异的方式
    7. 谷歌GCM服务器返回404错误
    8. 实施IOS5的SIP函数
    9. 无法访问tenant站点的仪表板
    10. 在CSS创建六边形/ HTML

     
    

    Copyright © 2017 CodeGo.net
    http://codego.net/xinwen/ 足球比分网 足球比分 医药招商网 邵阳县新闻