11

私の Android アプリには、かなりうまく機能するカスタム コンテンツ プロバイダーがあります。他のアプリもコンテンツ プロバイダーにアクセスすることを期待しています。例外とエラーを明確に伝える方法が欲しいのですが、私が知る限り、Android コンテンツ プロバイダー フレームワークは、プロセス間で例外を伝播する方法を提供していません。

呼び出し元に例外状態を示すにはどうすればよいですか? 何らかの方法でそれを返されたデータにエンコードし、それを確認するためにクライアントに頼る必要がありますか? 代替手段はありますか?通常の戻りデータにエンコードする場合、最善の方法は何ですか? (呼び出しCursorによって返される には多くの選択肢がありますが、によって返される、 または によって返される はどうでしょうか?)queryUriinsertintupdatedelete

4

1 に答える 1

17

RuntimeExceptionプロバイダーでスローされた場合にクライアント アプリで再スローされるサブクラスの短いリストがあります。これらには以下が含まれます:

  • IllegalStateException
  • IllegalArgumentException
  • NullPointerException
  • SecurityException
  • BadParcelableException

Parcel.writeException追加されたドキュメントへの最新の更新

  • UnsupportedOperationException
  • NetworkOnMainThreadException

出典:コンテンツ プロバイダーの作成に関する言及IAENPE; Javadoc for にParcel.writeException基づいて、他のものは機能すると思いました。

クライアント アプリは詳細メッセージのみを取得し、スタック トレースや原因スタックは取得しません。String(詳細メッセージ) にエンコードできる例外的な状態の場合、これは妥当な選択です。

私はまだ他のソリューションにも興味があります。

于 2012-08-17T19:40:09.440 に答える