如何处理对方向更改的aidl服务绑定

问题描述 投票:0回答:1

我正在构建一个应用程序(aidl服务),它将通过Activity中的代码调用(Activity将由其他人编写,我无法控制它)。

Activity创建对服务的绑定,调用服务上的方法并通过回调获取结果。

如果活动方向发生变化,则必须再次绑定到服务,但之前的回调将丢失。

处理绑定服务上的活动方向更改的最佳方法是什么。

android android-service aidl android-service-binding
1个回答
0
投票

几种选择,取决于具体情况:

1)让Activity处理方向改变自己,而不是让Android杀死并重新创建Activity。如果Activity有很多状态,那么这通常是一件好事。

2)让被杀死的ActivityBinder(参考Service)交给新创建的Activity。这可以使用NonConfigurationInstance完成。

3)将Binder(引用Service)存储在可以从任何类访问的static变量中(这可能导致内存泄漏,但通常相对安全)。

4)成功重新绑定后,Service可以将其所有当前“状态”发送回新的Activity(这可能已足够,具体取决于您使用的回调)。

© www.soinside.com 2019 - 2024. All rights reserved.