其他分享
首页 > 其他分享> > 当客户端附加和分离到Android服务时得到通知

当客户端附加和分离到Android服务时得到通知

作者:互联网

我有一个Android服务,可通过AIDL导出RPC接口.该接口是面向连接的,客户端将在其中连接,与之进行事务处理,然后在退出时断开连接.

不幸的是,客户端异常退出,例如被系统杀死,就永远没有机会告诉RPC接口连接已关闭.这引起了问题.

当新客户端将自己与接口分离时,有什么方法可以自动通知服务?我发现了onBind()和onUnbind(),但它们不是同一回事.他们告诉我该接口是否正在使用. onUnbind()仅在最后一个客户端分离时才被调用.

有任何想法吗? (而且服务的设计受外部需求控制,无法更改…)

更新:我完全忘了提起我看过的linkToDeath(),它几乎可以完全满足我的要求,但是它似乎只能以相反的方式工作—它允许客户端在服务终止时得到通知.当我尝试时,似乎什么都没有发生.该文档有点不完整;谁知道这是否可以满足我的需求?如果是这样,该如何告诉我哪个客户死亡了?

更新更新:我已经解决了这个问题,但是只能通过作弊来解决.我重新定义了它.我的应用实际上实际上是使用NDK用C编写的,因此服务的设计很奇怪.因此,我将问题转移到C语言世界,并创建了一个微型帮助程序进程,该进程使用Unix域套接字直接与应用程序的本机部分通信.它速度快,非常小,几乎是防弹的—但它仍然在作弊.因此,尽管现在我的问题已解决,但我仍然想知道实际的答案是什么.

解决方法:

也许linkToDeath()可以在这里提供帮助.

标签:android-binder,android-service,android
来源: https://codeday.me/bug/20191102/1988539.html