我正在构建一个应用程序(aidl服务),它将通过Activity中的代码调用(Activity将由其他人编写,我无法控制它)。
Activity创建对服务的绑定,调用服务上的方法并通过回调获取结果。
如果活动方向发生变化,则必须再次绑定到服务,但之前的回调将丢失。
处理绑定服务上的活动方向更改的最佳方法是什么。
几种选择,取决于具体情况:
1)让Activity
处理方向改变自己,而不是让Android
杀死并重新创建Activity
。如果Activity
有很多状态,那么这通常是一件好事。
2)让被杀死的Activity
将Binder
(参考Service
)交给新创建的Activity
。这可以使用NonConfigurationInstance
完成。
3)将Binder
(引用Service
)存储在可以从任何类访问的static
变量中(这可能导致内存泄漏,但通常相对安全)。
4)成功重新绑定后,Service
可以将其所有当前“状态”发送回新的Activity
(这可能已足够,具体取决于您使用的回调)。