专栏名称: 郭霖
Android技术分享平台,每天都有优质技术文章推送。你还可以向公众号投稿,将自己总结的技术心得分享给大家。
目录
相关文章推荐
复利大王  ·  江浙沪美女留子回国下嫁怀孕后悔 ·  昨天  
复利大王  ·  好牛的幼儿园 ·  2 天前  
复利大王  ·  老同学中捞一捞能不能找到免费P友 ·  2 天前  
复利大王  ·  不讲武德!中x银行? ·  2 天前  
51好读  ›  专栏  ›  郭霖

Application和四大组件启动时的方法顺序和相关注意事项

郭霖  · 公众号  · android  · 2017-04-27 08:00

正文

请到「今天看啥」查看全文


为了测试 四大组件 和 Application 的各种方法( attachBaseContext、onCreate、call 等)被系统调用的顺序,我们创建一个简单的应用,只包含这5个组件,不考虑一个应用多进程的情况,代码分别为:

MainApplication.java

MainActivity.java

MainService.java

MainReceiver.java

MainProvider.java

在以下几个场景测试时,均已冷启动的方式启动应用。

冷启动,指的是在系统没有创建apk这个进程时启动apk。

注意在测试的手机上,不要让测试的应用被禁止关联启动或自启动:

场景一 ,点击桌面的图标启动应用,日志如下:

场景二 ,通过另外一个应用以启动Service的形式启动应用,其中启动 MainService 的代码如下:

日志如下:

场景三 ,应用通过接受开机广播启动的方式启动,日志如下:

场景四 ,其他应用调用 ContentProvider 的 call 方法启动,其中,调用 MainProvider 的 call 代码如下:

日志如下:

结论:

从上面四个场景可以看出:

1. Application 的 attachBaseContext 方法是优先执行的;

2. ContentProvider 的 onCreate 的方法比 Application 的 onCreate 的方法先执行;

3. Activity、Service的 onCreate 方法以及 BroadcastReceiver 的 onReceive 方法,是在 MainApplication 的 onCreate 方法之后执行的;

4. 调用流程为: Application 的 attachBaseContext ---> ContentProvider 的 onCreate ----> Application 的 onCreate ---> Activity、Service 等的 onCreate(Activity 和 Service 不分先后);

问题






请到「今天看啥」查看全文