如何在方向更改时处理辅助服务绑定

时间:2019-03-20 21:10:49

标签: android android-service aidl android-service-binding

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

活动创建到服务的绑定,在服务上调用方法,并通过回调返回结果。

如果活动方向发生变化,它将不得不再次绑定到服务,但是先前的回调将丢失。

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

1 个答案:

答案 0 :(得分:0)

根据情况有几种选择:

1)改变Activity的句柄方向,而不是让Android杀死并重新创建Activity。如果Activity具有很多状态,那么无论如何这通常是一件好事。

2)让被杀死的Activity移交Binder(引用Service)到新创建的Activity。可以使用NonConfigurationInstance完成。

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

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