一個能夠被啓動的Activity必需要在AndroidManifest.xml文件中進行配置
java
一、顯式啓動:須要指定明確的組件信息
android
Intent intent = new Intent(context, OtherActivity.class); startActivity(intent);
在一個BroadcastReceiver中啓動一個Activity由於該上下文沒有所屬的任務棧會報錯,須要指定爲其建立一個新的任務棧spa
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
二、隱式啓動:須要匹配目標組件的IntentFilter中設置的過濾信息,只有一個Intent同時匹配action、category、data纔算徹底匹配,一個Activity能夠配置多個<intent-filter>只要匹配一組便可。code
action匹配:<intent-filter>中能夠配置多個<action>,只要有一個匹配即匹配成功xml
category匹配:<intent-filter>中若是沒有配置<category>則系統會配置一個默認的android.intent.category.DEFAULT值,若是開發者配置了多個<category>系統不會再爲咱們添加DEFAULT值須要手動添加該配置值。由於經過Intent啓動一個組件的時候系統會在Intent中附加DEFAULT值,因此沒有配置DEFAULT的組件是不能夠被隱式啓動的。匹配規則:若是Intent中含有category,那麼全部的category值必須與配置中的一組配置相同或更少才能匹配上。開發
data匹配:若是配置中定義了<data>,那麼Intent中也必須指定data才能匹配。若是配置<data>時沒有指定android:scheme則默認值爲content和file。
it