Android基础知识回顾——Intent的使用

时间:2022-01-11 15:31:59

Intent是Android程序中各组件之间进行交互的重要方式,除了能指明当前组件想要执行的动作,还能在不同组件之间传递数据。Intent一般被用于启动活动,启动服务及发送广播。Intent大致可以分为显式Intent和隐式Intent

显式Intent

  • Intent有多个构造函数的重载,其中一个是Intent(Context packageContext,Class<?> cls)。这个构造函数接收的两个参数,第一个是启动活动的上下文,第二个参数是指定启动的目标。要使用这个Intent,我们要用到startActivity()方法,它接收一个Intent参数,我们只要将创建好的Intent传入就行了
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button btn = findViewById(R.id.btn);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this,SecondActivity.class);
                startActivity(intent);
            }
        });
    }
}
  • 这里添加了一个Button按钮并创建了它的点击事件,当点击这个按钮时,便会跳转到SecondActivity活动中

隐式Intent

  • 隐式Intent与显式Intent不同,它并不会明确指出我们想要启动哪一个活动,而是指定了一系列更为抽象的action和category等信息。打开AndroidManifest.xml,添加如下代码:
        <activity android:name=".SecondActivity">
            <intent-filter>
                <action android:name="android.intent.action.Second" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
  • 然后修改Button的点击事件
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent("android.intent.action.Second");
                startActivity(intent);
            }
        });
  • 只有<action><category>能够同时匹配到Intent中指定的action和categroy时,这个活动才响应Intent。android.intent.category.DEFAULT是默认的categroy,调用startActivity()方法时会自动添加进去