4

異なるプロセスに存在するバインダーサービスとクライアントがあります。AIDLを使用すると、クライアントがリモートバインダーサービスを呼び出すときに、エラー(例外)をクライアントに中継する必要がある場合があります。

しかし、私の理解では、これは不可能です。バインダーサービスから「RemoteException」をスローして何が起こるかを確認しようとしましたが、

キャッチされていないリモート例外!(例外はまだプロセス間でサポートされていません。)

私のlogcatで。

これは不可能のように思われるので、クライアントにエラーを通知するための最良のアプローチは何ですか?AIDLを変換して、エラーコード(成功した場合は0)を返すCスタイルのインターフェイスを使用できると思っていましたが、これは見苦しいです。

より良いアプローチはありますか?

4

1 に答える 1

7

リモートメソッドParcelは、結果データを含むを返すか、エラーがある場合は例外を返すことができます。Parcel#writeExceptionメソッドを参照してください。ContentProviderこれが、別のプロセスに存在するに対してアクションを実行するときにAndroidの例外が元に戻す方法であると私は信じています。Bundleクラスの使用を含め、結果データを返す方法はたくさんあります。

マネージャークラスは、データのパーセル化を解除して返すか、パーセル化されていない例外をスローすることで実装の詳細を非表示にして、ユーザーがを操作しないようにすることができますParcel

のソースへのリンクは次のとおりですParcel#writeException

于 2013-03-24T22:49:16.487 に答える