これが、AIDLの方向タグを説明する私のバージョンです。
例:以下のAIDLインターフェースを確認して、より良い方法で理解してください。
package com.hardian.sample.aidl;
import com.hardian.sample.aidl.TeamMember;
interface ITeamManageService {
void getTeamCaptian(out TeamMember member);
void updateTeamMember(inout TeamMember member, in boolean isLeader);
oneway void removeTeamMember(in TeamMember member);
}
ここでは、データがどちらの方向に進むかを示すために、inout方向タグを使用しました。
getTeamCaptian(out TeamMember member):チームのキャプテンを取得します。ここで、「out」方向タグは、クライアントがこのメソッドを呼び出すときに、「member」オブジェクトに関連データがないことを意味しますが、サーバーは「member」オブジェクトに変更を加えるため、クライアントは更新された「member」オブジェクトを取得する必要があります。実際、メソッド呼び出しは同期です。
updateTeamMember(inout TeamMember member、in boolean isLeader):チームのキャプテンを更新します。ここで、「inout」方向タグは、クライアントがこのメソッドを呼び出すときに、「member」オブジェクトに関連データが含まれていることを意味します。そして、サーバーは入力データを使用して処理する必要があります。プロセスが完了すると、クライアントは関連するデータを取り戻す必要があります。実際、メソッド呼び出しは同期です。
removeTeamMember(TeamMemberメンバー内)
チームからメンバーを削除します。ここで、「in」方向タグは、「メンバー」オブジェクトがクライアントからサービスに転送され、入力にのみ使用されることを意味します。サービスの「メンバー」オブジェクトに変更が加えられた場合、それはクライアントに反映されません。メソッド呼び出しは非同期です。メソッドシグネチャに「 oneway」キーワードを付けることができます。非同期メソッドには「out」および「inout」引数を含めることはできません。また、voidを返す必要があります。