如何启动较新版本的AIDL服务并停止旧版本的AIDL服务

时间:2013-06-20 12:07:25

标签: android process android-service aidl android-binder

我需要的是与How to properly upgrade AIDL interfaces in Android?问题非常相似的问题,但我还希望在安装AIDL服务后启动更新版本的AIDL服务并停止旧版本。简单地说:我需要最新版本始终是正在运行的版本。 (当然,将保留较新版本的向后兼容性。)

详细说,我们说:

  • Android应用A在其代码中具有旧版本的AIDL服务(并且在清单中也称为特殊远程进程)。
  • App B是一个应用程序,其中包含用户刚刚安装的较新版本的AIDL服务。

当安装应用B时,我以编程方式杀死这两个应用的进程以及AIDL服务的远程进程。无论我尝试在此之后启动包含在较新的应用程序B中的AIDL服务是没有用的,旧版本将始终重新启动(除非我卸载旧的应用程序A)。

有趣的事情是,我能够专门针对较新的AIDL服务启动(如果仅安装了两个应用程序,则从较新的应用程序绑定到服务),以及旧版本的AIDL服务以前从未启动过。我的意思是我启动旧的应用程序A,我能够在应用程序B中启动新版本的AIDL服务。如果旧版本的AIDL之前已经运行过至少一次,那么无论如何,即使在重新启动设备之后,Android也将始终在未来启动!

0 个答案:

没有答案