1

私は非常に限られた権限しか持っていないコードのどこかにいますが、データを外部の Android アプリケーションに送信する必要があります。(Android システム C コード) 明らかに、そこでバインダー サービスを開始することはできませんが、既に実行中のサービスに接続することはできます。したがって、私の実装では、サービスが利用可能かどうかを毎秒チェックし、利用可能な場合は接続してデータの送信を開始します。これはうまくいきます。

私の問題は次のとおりです。サービスのバイナリ/プロセスを強制終了すると、クライアントは、サービスが利用できなくなったことを何らかの形で認識しません。を使用して追加したサービスを削除する方法はありaddService(...)ますか? クライアントはそうしますgetService()

4

2 に答える 2

0

サービス ハンドルを削除する API はありませんが、サービスが終了すると、サービス マネージャーは を使用してハンドルを解放しsvcinfo_death()ます。ネイティブ サービス マネージャーで有効な受信トランザクション コードは、、、、SVC_MGR_GET_SERVICEおよび( service_manager.c を参照)のみです。SVC_MGR_CHECK_SERVICESVC_MGR_ADD_SERVICESVC_MGR_LIST_SERVICES

とはいえ、このソリューションを問題に適用すると、への別の呼び出しが必要かどうかを判断する際により効率的で信頼できる場合getService()があります。

于 2014-09-11T14:30:13.957 に答える