顯式和隱式啟動Activity、Service
阿新 • • 發佈:2019-01-10
- 顯式Intent:通過指定Intent元件名稱來實現的,它一般用在知道目標元件名稱的前提下,一般是在相同的應用程式內部實現的。
- 隱式Intent:通過Intent Filter來實現的,它一般用在沒有明確指出目標元件名稱的前提下,一般是用於在不同應用程式之間。
1.顯式啟動Activity:
- //顯示方式宣告Intent,直接啟動SecondActivity
- Intent it = new Intent(MainActivity.this,SecondActivity.class);
- //啟動Activity
- startActivity(it);
Manifest.xml中宣告如下:
- <activityandroid:name=".SecondActivity"
- android:label="@string/app_name">
- </activity>
2.隱式啟動Activity:
- Intent it = new Intent();
- //設定Intent的Action屬性
- it.setAction("com.android.activity.MY_ACTION");
- // 啟動Activity
- startActivity(it);
Manifest.xml宣告如下:
-
<activityandroid:name=".SecondActivity"
- <intent-filter>
- <actionandroid:name = "com.android.activity.MY_ACTION"/>
- <categoryandroid:name = "android.intent.category.DEFAULT"/>
- </intent-filter>
- </activity>
3.service:
隱式啟動
<service android:name=".service">
<intent-filer>
<action android:name="com.android.service"/>
<intent-filer>
</service>
Intent serviceIntent=new Intent();
serviceIntent.setAction("com.android.service");
startService(serviceIntent);
顯示啟動
final Intent serviceIntent=new Intent(this,service.class);
startService(serviceIntent);
如果在同一個包中。兩者都可以用。在不同包時。只能用隱式啟動