简介
android启动activity分为显式启动和隐式启动。
显式启动时,指定被启动activity类,系统启动被指定的activity类。
隐式启动时,指定action、category,系统会拿action、category去AndroidManifest.xml中匹配,匹配的activity启动。
显式启动
某Activity类中代码,启动MyActivity
Intent intent = new Intent(this,MyActivity.class);
startActivity(intent);
隐式启动
系统去AndroidManifest.xml中寻找匹配actioncom.myapp.action.secondaction
、category的com.myapp.category.mycategory
activity,这里会启动SecondActivity
Intent intent = new Intent("com.myapp.action.secondaction");
intent.addCategory("com.myapp.category.mycategory");
startActivity(intent);
AndroidManifest.xml配置
<activity android:name=".SecondActivity">
<intent-filter >
<action android:name="com.myapp.action.secondaction"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="com.myapp.category.mycategory"/>
</intent-filter>
</activity>
说明,由于startActivity方法默认会添加一个categoryandroid.intent.category.DEFAULT
,所以配置上默认category;只有action和category同时匹配时,activity才会响应。