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