从服务向活动抛出自定义异常

das*_*lvj 6 service android ipc exception

我目前正在研究Android上的XMPP应用程序,我正在思考从我的服务向我的活动抛出不同类型的Exception而不是RemoteException的最佳方法.

因为使用IPC似乎不可能抛出另一个东西而不是RemoteException(你不能声明在你的.aidl中抛出任何东西),我只看到两个解决方案:

  • 为我的活动创建一个监听器来监听我的自定义XMPP异常,实际上它不会被抛出,而只是作为实现Parcelable协议的通常对象发送.

  • 抓住我的XMPPException并抛出一个RemoteException(用我的XMPPException更新内容) - 但在这种情况下,我怎么能知道我的活动是XMPP还是真正的RemoteException?通过标记异常的名称并在我的活动中解析它?这真的很血腥.

你有什么主意吗 ?我是否遗漏了SDK文档中的内容?

谢谢.

Com*_*are 5

如果#1表示我认为它的作用,我将使用它 - 让服务捕获异常并在由活动创建和提供的AIDL定义的回调对象上调用方法.

您可以从我的一本书中看到此客户端和服务项目中该技术的示例.