1. 程式人生 > >顯式和隱式啟動Activity、Service

顯式和隱式啟動Activity、Service

Intent尋找目標元件的兩種方式:

  • 顯式Intent:通過指定Intent元件名稱來實現的,它一般用在知道目標元件名稱的前提下,一般是在相同的應用程式內部實現的。
  • 隱式Intent:通過Intent Filter來實現的,它一般用在沒有明確指出目標元件名稱的前提下,一般是用於在不同應用程式之間。

1.顯式啟動Activity:

  1. //顯示方式宣告Intent,直接啟動SecondActivity
  2. Intent it = new Intent(MainActivity.this,SecondActivity.class);
  3. //啟動Activity
  4. startActivity(it);

Manifest.xml中宣告如下:

  1. <activityandroid:name=".SecondActivity"
  2. android:label="@string/app_name">
  3. </activity>

2.隱式啟動Activity:

  1. Intent it = new Intent();
  2. //設定Intent的Action屬性
  3. it.setAction("com.android.activity.MY_ACTION");
  4. // 啟動Activity
  5. startActivity(it);

Manifest.xml宣告如下:

  1. <activityandroid:name=".SecondActivity"
    >
  2. <intent-filter>
  3. <actionandroid:name = "com.android.activity.MY_ACTION"/>
  4. <categoryandroid:name = "android.intent.category.DEFAULT"/>
  5. </intent-filter>
  6. </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);
如果在同一個包中。兩者都可以用。在不同包時。只能用隱式啟動