必要なものは、Android で AIDL インターフェースを適切にアップグレードする方法と非常に似ていますか? 質問ですが、インストール後に新しいバージョンの AIDL サービスを起動し、古いバージョンを停止することも望んでいます。簡単に言えば、最新バージョンが常に実行中のバージョンである必要があります。(もちろん、新しいバージョンの後方互換性は維持されます。)
詳細に、次のように言いましょう。
- Android アプリ A のコードには古いバージョンの AIDL サービスが含まれています (また、マニフェストに特別なリモート プロセスとして記述されています)。
- アプリ B は、ユーザーがインストールしたばかりの新しいバージョンの AIDL サービスを含むアプリです。
アプリ B がインストールされると、両方のアプリのプロセスと AIDL サービスのリモート プロセスをプログラムで強制終了します。その時点以降、新しいアプリ B に含まれる AIDL サービスを起動しようとして何をしても無駄であり、古いバージョンは常に再起動されます (古いアプリ A をアンインストールしない限り)。
興味深いことに、両方のアプリがインストールされているだけで、古いバージョンの AIDL サービスが以前に開始されたことがない場合は、特に新しい AIDL サービスを開始する (新しいアプリからサービスにバインドする) ことができます。これは、古いアプリ A を起動し、アプリ B 内で新しいバージョンの AIDL サービスを開始できることを意味します。古いバージョンの AIDL が過去に少なくとも 1 回実行されている場合、それは、将来何があっても(デバイスを再起動した後でも)Androidが常に起動するものになります!