什么是stub
存根類是一個類,它實現了一個接口,但是實現后的每個方法都是空的。
如果一個接口有很多方法,如果要實現這個接口,就要實現所有的方法。
但是一個類從業務來說,可能只需要其中一兩個方法。如果直接去實現這個接口,除了實現所需的方法,還要實現其他所有的無關方法。而如果通過繼承存根類就實現接口,就免去了這種麻煩。
代碼實例:
接口類:
public interface IRepo {
public void remove(String... sarr);
public void add(String... sarr);
//Lots of other methods I don't need now
}
stub類
public class Repo extend IRepo.Stub {
@Overread
public void add(String... sarr) {
}
}
Stub 和Android
在用binder通信時,stub類是為了方便client,service交互而生成出來的代碼。
AIDL( Interface Definition Language Android接口定義語言)實現進程間通信,尤其是在涉及多進程並發情況下的進程間通信。
IaidlData.aidl會在gen中自動生成一個同名的IaidlData.java接口文件,該接口文件包含一個抽象類stub,其繼承了android.os.Binder、實現IaidlData接口,我們需要繼承IIaidlData.Stub類,完成對IaidlData.java文件是的實現。