目录
一、Activity的分类
二、Activity的启动方式
三、根Activity的启动过程
四、子Activity的在根Activity相同进程中的启动过程
五、子Activity在新进程中的启动过程
一、Activity分类
Activity可分为根Activity和子Activity两种
根Activity是以快捷图标显示在Launcher中,它的启动过程就代表了一个应用程序的启动过程
子Activity由根Activity或者其它的子Activity启动,它们与启动它们的Activity可能在同一进程中,也可能在不同的进程中
二、Activity的启动方式
有显式和隐式两种,比如
显式: Intent intent = new Intent(A.this,B.class);
startActivity(intent);
隐式:
AndroidManifest.xml中定义某个Activity的intent-fliter
<intent-filter>
<action android:name="com.example.activity.wanglx" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
Activity中:
Intent intent = new Intent("com.example.activity.wanglx");
startActivity(intent);
显式启动需要知道实现这个Activity的类名,比如B.class;隐式启动只需要知道intent-filter的action名字即可
三、根Activity的启动过程(分六步)
四、子Activity的在根Activity相同进程中的启动过程
和根Activity的启动类似,只是不需要给它创建一个新的进程和任务
五、子Activity在新进程中的启动过程
和根Activity的启动类似,也要新启动一个进程,只是不需要给它创建一个新的任务
应用程序进程发消息给AMS:ActivityManagerProxy(通过ActivityManagerNative.getDefault()获得)
AMS发消息给应用程序:ApplicationThreadProxy(通过ActivityRecord中app.thread获得)