这不是基于最新的 api 的吧?现在都是getDelegate() 了
来源:4-2 说说Activity的显示原理
慕瓜4130005
2019-05-25
@Override
public void setContentView(@LayoutRes int layoutResID) {
getDelegate().setContentView(layoutResID);
}
写回答
2回答
-
styluo
2019-05-25
这个应该跟版本没有关系,您贴的代码应该是AppCompatActivity#setContentView,代码分析的是Activity#setContentView,最主要的PhoneWindow#getDecorView调用installDecor中的逻辑是一样的,另一个重要的就是LayoutInflater.from对应的实现是一样的
// AppCompatDelegateImplV9#setContentView,委托的实现类 @Override public void setContentView(int resId) { ensureSubDecor(); // 内部调用了PhoneWindow#getDecorView ViewGroup contentParent = (ViewGroup) mSubDecor.findViewById(android.R.id.content); contentParent.removeAllViews(); LayoutInflater.from(mContext).inflate(resId, contentParent); mOriginalWindowCallback.onContentChanged(); } // AppCompatDelegate#setContentView,注解上说明用于替换调用Activity的setContentView /** * Should be called instead of {@link Activity#setContentView(android.view.View)}} */ public abstract void setContentView(View v);20 -
风语
2019-05-25
您好,这门课程是基于6.0的源码。
00
相似问题
关于service的启动流程
回答 1
老师可以把课后题的答案分享一下吗
回答 2