安卓应用有几个context

最近看源码看到Context这一块,发现很多网上的博客对“安卓应用有几个context”这一个问题统一给出的答案是:Activity数量+Service数量+1我通过源码的分析发现根本不是这样,Context的数量应该是:2*(Activity数量+Service数量+1)要搞清楚这个问题就需要研究Activity和Application的生成了,Activity和Application的生成都位于ActivityThread的performLaunchActivity方法源代码:Contex
摘要由CSDN通过智能技术生成

最近看源码看到Context这一块,发现很多网上的博客对“安卓应用有几个context”这一个问题统一给出的答案是:

Activity数量+Service数量+1

我通过源码的分析发现根本不是这样,Context的数量应该是:

2*(Activity数量+Service数量+1)

要搞清楚这个问题就需要研究Activity和Application的生成了,Activity和Application的生成都位于ActivityThread的performLaunchActivity方法源代码:

ContextImpl appContext = createBaseContextForActivity(r);
Activity activity = null;
// 1.为Activity生成context
ContextImpl appContext = createBaseContextForActivity(r);
 java.lang.ClassLoader cl = appContext.getClassLoader();
 //2.通过反射获取Activity实例
activity = mInstrumentation.newActivity(
       cl, component.getClassName(), r.intent);
StrictMode.incrementExpectedActivityCount(activity.getClass());
 r.intent.setExtrasClassLoader(cl);
 r.intent.prepareToEnterProcess();
 ............
 //3.生成Application对象
 Application app = r.packageInfo.makeApplication(false, mInstrumentation);
 ...
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值