TransactionTooLargeException クラス

定義

バインダー トランザクションが大きすぎたため失敗しました。

[Android.Runtime.Register("android/os/TransactionTooLargeException", DoNotGenerateAcw=true)]
public class TransactionTooLargeException : Android.OS.RemoteException
[<Android.Runtime.Register("android/os/TransactionTooLargeException", DoNotGenerateAcw=true)>]
type TransactionTooLargeException = class
    inherit RemoteException
継承
属性

注釈

バインダー トランザクションが大きすぎたため失敗しました。

リモート プロシージャ 呼び出し中に、呼び出しの引数と戻り値は、Binder トランザクション バッファーに格納されているオブジェクト Parcel として転送されます。 引数または戻り値が大きすぎてトランザクション バッファーに収まらない場合、呼び出しは失敗します。 TransactionTooLargeException は、トランザクションが大きいときにヒューリスティックとしてスローされ、失敗します。これは、トランザクション バッファーをオーバーフィルする可能性が最も高いトランザクションであるためです。

Binder トランザクション バッファーの固定サイズは制限されており、現在 1 MB であり、プロセスで進行中のすべてのトランザクションによって共有されます。 したがって、この例外は、個々のトランザクションの大部分が中程度のサイズの場合でも、進行中のトランザクションが多数ある場合にスローされる可能性があります。

リモート プロシージャコールが TransactionTooLargeExceptionをスローすると、2 つの結果が発生する可能性があります。 クライアントがその要求をサービスに送信できなかったか (多くの場合、引数が大きすぎてトランザクション バッファーに収まらない場合)、またはサービスが応答をクライアントに返すことができませんでした (ほとんどの場合、戻り値が大きすぎてトランザクション バッファーに収まらない場合)。 これらの結果のうち、実際に発生した結果を把握することはできません。 クライアントは、部分的なエラーが発生したと想定する必要があります。

TransactionTooLargeExceptionを回避する鍵は、すべてのトランザクションを比較的小さくすることです。 引数の Parcel とリモート プロシージャ 呼び出しの戻り値を作成するために必要なメモリ量を最小限に抑えるようにしてください。 文字列や大きなビットマップの膨大な配列を転送しないようにします。 可能であれば、大きな要求をより小さな部分に分割してみてください。

サービスを実装する場合は、クライアントが実行できるクエリにサイズまたは複雑さの制約を課すのに役立つ場合があります。 たとえば、結果セットが大きくなる可能性がある場合は、クライアントが一度に複数のレコードを要求することを許可しないでください。 または、使用可能なすべてのデータを一度に返す代わりに、最初に重要な情報を返し、後で必要に応じてクライアントに追加情報を要求します。

Javaドキュメント。

このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。

コンストラクター

名前 説明
TransactionTooLargeException()

TransactionTooLargeException クラスの新しいインスタンスを初期化します。

TransactionTooLargeException(IntPtr, JniHandleOwnership)

JNI オブジェクトのマネージド表現を作成するときに使用されるコンストラクター。ランタイムによって呼び出されます。

TransactionTooLargeException(String)

TransactionTooLargeException クラスの新しいインスタンスを初期化します。

フィールド

名前 説明
is_generated

このスロー可能なオブジェクトがバインディングによって生成されたかどうかを示します。

(継承元 Throwable)

プロパティ

名前 説明
Cause

原因が存在しないか不明な場合は、このスロー可能または null の原因を返します。

(継承元 Throwable)
Class

このスロー可能なランタイム クラスを取得します。

(継承元 Throwable)
Handle

基になる Android インスタンスへのハンドル。

(継承元 Throwable)
JavaStackTrace

バインダー トランザクションが大きすぎたため失敗しました。

(継承元 JavaException)
JniIdentityHashCode

相互運用ランタイムによってこのJava ピアに割り当てられた ID ハッシュ コードを取得します。

(継承元 Throwable)
JniManagedPeerState

バインダー トランザクションが大きすぎたため失敗しました。

(継承元 JavaException)
JniPeerMembers

この型の JNI ピア メンバー メタデータを提供します。

LocalizedMessage

このスロー可能なローカライズされた説明を作成します。

(継承元 Throwable)
Message

このスロー可能な詳細メッセージ文字列を返します。

(継承元 Throwable)
PeerReference

このJava ピアの JNI オブジェクト参照を取得します。

(継承元 Throwable)
StackTrace

このスロー可能なスタック トレースの文字列形式を取得します。

(継承元 Throwable)
ThresholdClass

この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。

ThresholdType

この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。

メソッド

名前 説明
AddSuppressed(Throwable)

この例外を配信するために抑制された例外に、指定した例外を追加します。

(継承元 Throwable)
Construct(JniObjectReference, JniObjectReferenceOptions)

バインダー トランザクションが大きすぎたため失敗しました。

(継承元 JavaException)
Dispose()

このJava ピアによって保持されているリソースを解放します。

(継承元 Throwable)
Dispose(Boolean)

このJava ピアによって保持されているリソースを解放します。

(継承元 Throwable)
DisposeUnlessReferenced()

バインダー トランザクションが大きすぎたため失敗しました。

(継承元 JavaException)
Equals(Object)

バインダー トランザクションが大きすぎたため失敗しました。

(継承元 JavaException)
FillInStackTrace()

実行スタック トレースを入力します。

(継承元 Throwable)
GetHashCode()

バインダー トランザクションが大きすぎたため失敗しました。

(継承元 JavaException)
GetStackTrace()

#printStackTrace()によって出力されるスタック トレース情報へのプログラムによるアクセスを提供します。

(継承元 Throwable)
GetSuppressed()

この例外を配信するために、通常は try with-resources ステートメントによって抑制されたすべての例外を含む配列を返します。

(継承元 Throwable)
InitCause(Throwable)

このスロー可能なを指定した値に初期化します。

(継承元 Throwable)
PrintStackTrace()

このスロー可能とそのバックトレースを標準エラー ストリームに出力します。

(継承元 Throwable)
PrintStackTrace(PrintStream)

このスロー可能なオブジェクトとそのバックトレースを、指定された印刷ストリームに出力します。

(継承元 Throwable)
PrintStackTrace(PrintWriter)

このスロー可能ファイルとそのバックトレースを、指定された印刷ライターに出力します。

(継承元 Throwable)
RethrowAsRuntimeException()

これは、チェックされていないランタイム例外として再スローします。

(継承元 RemoteException)
RethrowFromSystemServer()

システム サーバーから発生したことがわかっている場合は、この例外を再スローします。

(継承元 RemoteException)
SetHandle(IntPtr, JniHandleOwnership)

Handle プロパティを設定します。

(継承元 Throwable)
SetJavaStackTrace(JniObjectReference)

バインダー トランザクションが大きすぎたため失敗しました。

(継承元 JavaException)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

バインダー トランザクションが大きすぎたため失敗しました。

(継承元 JavaException)
SetStackTrace(StackTraceElement[])

#getStackTrace()によって返され、#printStackTrace()および関連するメソッドによって出力されるスタック トレース要素を設定します。

(継承元 Throwable)
ToString()

この値を文字列に変換します。

(継承元 Throwable)
UnregisterFromRuntime()

相互運用ランタイムからこのJava ピアの登録を解除します。

(継承元 Throwable)

明示的なインターフェイスの実装

名前 説明
IJavaPeerable.Disposed()

バインダー トランザクションが大きすぎたため失敗しました。

(継承元 JavaException)
IJavaPeerable.Finalized()

バインダー トランザクションが大きすぎたため失敗しました。

(継承元 JavaException)
IJavaPeerable.JniObjectReferenceControlBlock

バインダー トランザクションが大きすぎたため失敗しました。

(継承元 JavaException)
IJavaPeerable.SetJniIdentityHashCode(Int32)

バインダー トランザクションが大きすぎたため失敗しました。

(継承元 JavaException)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

バインダー トランザクションが大きすぎたため失敗しました。

(継承元 JavaException)
IJavaPeerable.SetPeerReference(JniObjectReference)

バインダー トランザクションが大きすぎたため失敗しました。

(継承元 JavaException)

拡張メソッド

名前 説明
GetJniTypeName(IJavaPeerable)

インスタンス selfの型の JNI 名を取得します。

JavaAs<TResult>(IJavaPeerable)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

JavaCast<TResult>(IJavaObject)

Android ランタイムチェック型変換を実行します。

JavaCast<TResult>(IJavaObject)

バインダー トランザクションが大きすぎたため失敗しました。

TryJavaCast<TResult>(IJavaPeerable, TResult)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

適用対象