私はこの種の問題に直面しています:IntentFilter
アクション文字列を定義するリモート (別のプロセス) バインド サービスがあります。bindService(..)
私のクライアントは、その呼び出しで同じアクション文字列を使用してそれにバインドします。
ここで、完全に異なるAIDLインターフェースを持つが同じ IntentFilter が定義された別のサービスを実装する場合、このサービスをインストールして古いサービスを削除します。
- 私のクライアントはまだバインドできます
- 私のクライアントは目的のメソッドを呼び出すことさえできます(void print(Payload)など)クライアント側もサーバー側も文句を言いません
私の質問: リモート サービスが実装しているインターフェイスを実行時に確認する方法はありますか?
私が見つけた唯一の可能な方法は、 で をチェックするComponentName
ことServiceConnection
です。ただし、これには 1 つの意味があります。将来、サービスの実装を交換することはできません。
または、何か不足していますか?