四大组件简单介绍
Activity:一种展示型组件。
Activity的启动由Intent触发,可以分为显示Intent和隐式Intent。
Service:一种计算型组件,用于执行一系列计算任务。
本身运行在主线程中,耗时操作仍然在单独的线程中完成。有启动服务和绑定服务两种。绑定服务可以进行数据交互操作。
BroadcastReceiver:是一种消息型组件,用于在不同组件乃至不同应用之间传递消息。
包括静态注册和动态注册两种。静态注册在安装时会被系统解析,不需要启动应用就可以接受到相关的广播。动态注册需要通过Context.registerReceiver()和Context.unRegisterReceiver()两种方法来注册和解除广播。
ContentProvider:一种数据共享型组件。内部需要实现增删改查操作,这些操作需要处理好线程同步操作。
Activity
Activity启动过程简单介绍:
第一步:
startActivity方法最终会调用startActivityForResult()方法。ApplicationThread是ActivityThread中的一个内部类。当mParent==null的时候,会调用Instrumentation的execStartActivity方法。在这个方法里面,会调用ActivityManagerNative.getDefault()的startActivity方法。ActivityManagerNative继承自Binder并实现了IActivityManager这个Binder接口,而ActivityManagerService继承自ActivityManagerNative,所以AMS也是一个Binder。现在分析到了Actiivty的启动是由AMS的startActivity方法来实现的。