Application和四大组件一些方法的启动顺序和一些坑.md

本文总结自:Android系统中的Application和四大组件一些方法的启动顺序和一些坑
总结:
  1. Application构造方法比attachBaseContext方法优先执行;
  2. ContentProvider的onCreate的方法比Application的onCreate的方法先执行(一定,静态注册);
  3. Activity、Service的onCreate方法以及BroadcastReceiver的onReceive方法,
    是在MainApplication的onCreate方法之后执行的;
  4. 调用流程为:Application构造方法 —> Application的attachBaseContext —>
    ContentProvider的onCreate—-> Application的onCreate —>
    Activity、Service等的onCreate(Activity和Service不分先后);
  5. Application的onCreate方法 和 Provider的call方法 不是顺序执行,而是会同时执行。
“坑”
  1. “坑”一:
    在Application的attachBaseContext方法中,使用了getApplicationContext方法。
    当我发现在attachBaseContext方法中使用getApplicationContext方法返回null时,内心是崩溃。
    所以,如果在attachBaseContext方法中要使用context的话,那么使用this吧,别再使用getApplicationContext()方法了。

  2. “坑”二:
    这个其实不算很坑,也不会引起崩溃,但需要注意:
    在Application的attachBaseContext方法中,去调用自身的ContentProvider,
    那么这个ContentProvider会被初始化两次,也就是说这个ContentProvider会被两次
    调用到onCreate。如果你在ContentProvider的onCreate中有一些逻辑,那么一定要检
    查是否会有影响。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值