从本机代码捕获Binder TransactionTooLargeException

时间:2016-07-21 14:34:34

标签: android android-intent android-binder

我以非常高的速率(超过100个意图/秒)从本机层向Java层发送意图。 如果CPU负载很高,则会在logcat中抛出TransactionTooLargeException,但我无法在本机发送方中将其捕获。

我的意图有大约300字节的小有效负载,事实上,我已经检查过,在第一个异常的那一刻,我有大约1 MB的意图发送但没有收到另一端(在Java中)应用程序)。

这是我的原生发件人代码。

sp<IServiceManager> mServiceManager = defaultServiceManager();
sp<IBinder>         mActivityManager  = mServiceManager->checkService(String16("activity"));

status_t ret = mActivityManager->transact(BROADCAST_INTENT_TRANSACTION, mData, &mReply, 0);

    if (ret == NO_ERROR)
    {
        int32_t exceptionCode = mReply.readExceptionCode();
        if (!exceptionCode)
        {
            status = true;
        }
        else
        {
            ALOGD("exception %d\n", exceptionCode);
        }
    }
    else
    {
        ALOGD("error: %d", ret);
    }

0 个答案:

没有答案