显式和隐式启动Activity、Service

时间:2022-12-29 16:43:45

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);
如果在同一个包中。两者都可以用。在不同包时。只能用隐式启动