_027_Android_ Intent 顯式及隱式啟動 Activity 的⽅式
轉自https://www.cnblogs.com/itfenqing/p/6714985.html,感謝作者的無私分享。
Android的Acitivity啟動大致有兩種方式:顯式啟動與隱式啟動。下面分別介紹:
A:顯式啟動
下面用程式碼來解釋什麼是顯式啟動。
Intent intent=new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);
B:隱式啟動
隱式啟動不同之處在於我們並不需要像Intent(MainActivity.this, SecondActivity.class)這樣傳引數然後再Start另一個Activity.我們需要在intent新增過濾器intentfilter。
<activity android:name="com.example.android.tst.SecondActivity" android:label="@string/title_activity_main" > <intent-filter> <action android:name="com.example.android.tst.SecondActivity"/> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>
我們需要在啟動另一個Activity的時候只需要如下方法就可以:
Intent intent=new Intent("com.example.android.tst.SecondActivity");
startActivity(intent);
轉自https://www.cnblogs.com/itfenqing/p/6714985.html,感謝作者的無私分享。
顯式啟動Activity和隱式啟動Activity
1.顯式啟動
Intent intent = new Intent(this, class);
startActivity(intent);
2.隱式啟動
AndroidManifest.xml中定義某個Activity的intent-fliter
<intent-filter>
<action android:name="com.example.activity.ACTION_START" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="com.example.activity.ACTION_START" />
</intent-filter>
Activity中
Intent intent = new Intent("com.example.activity.ACTION_START");
//android.intent.category.DEFAULT是一種預設的category,在startActivity時自動新增
intent.addCategory("com.example.activity.ACTION_START");
startActivity(intent);
隱式啟動,在啟動的時候是不明確的,需要匹配系統或AndroidManifest.xml中的intent-filter定義,只有action和category和data完全匹配時,才會啟動.
隱式啟動不僅可以啟動自己的Activity,還可以啟動其他的Activity,如開啟網頁
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);
這兒首先指定了intent的action為Intent.ACTION_VIEW,這是android內建的開啟網頁動作,然後通過Uri.parse將一個網址解析為Uri物件,再呼叫Intent的setData將Uri物件傳遞進去.