2,接听电话流程分析
2.1 InCallUI
当有来电时,在来电界面,一般向左滑动是拒接电话,向右滑动是接听电话.
在AnswerFragment.java中,接听电话会调用到onAnswer方法,调用流程图如下,
onAnswer方法如下,
public void onAnswer(int videoState, Context context) {
Log.d(this, "onAnswer videoState=" + videoState + " context=" + context);
getPresenter().onAnswer(videoState, context);
}
拒接电话会调用到onDecline方法,
public void onDecline(Context context) {
getPresenter().onDecline(context);
}
父类BaseFragment 的getPresenter的方法如下,
public T getPresenter() {
return mPresenter;
}
返回的是mPresenter变量,该变量是在BaseFragment的构造方法中初始化的,
protected BaseFragment() {
mPresenter = createPresenter();
}
createPresenter是一个抽象方法,具体的AnswerFragment实现如下,
public AnswerPresenter createPresenter() {
return InCallPresenter.getInstance().getAnswerPresenter();
}
InCallPresenter的getAnswerPresenter方法如下,
AnswerPresenter getAnswerPresenter() {
return mAnswerPresenter;
}
mAnswerPresenter变量定义如下,
private AnswerPresenter mAnswerPresenter = new AnswerPresenter();
因此, AnswerFragment的getPresenter方法最后返回的是AnswerPresenter对象。