Android中的Intent(显示&隐式)

Android中的Intent(显示&隐式)

  • 显示Intent
    显示Intent是明确目标Activity的类名

    1. 通过Intent(Context packageContext, Class cls)构造方法
      Intent intent = new Intent(this, SecondActivity.class)
      startActivity(intent);
      
    2. 通过Intent的setComponent()方法
      ComponentName componentName = new ComponentName(this, SecondActivity.class);
      ComponentName componentName = new ComponentName(this, "com.example.SecondActivity");
      ComponentName componentName = new ComponentName(getPackageName(), "com.example.SecondActivity");
      
      Intent intent = new Intent();
      intent.setComponent(componentName);
      startActivity(intent);
      
    3. 通过Intent的setClass/setClassName方法
      Intent intent = new Intent();
      intent.setClass(this, SecondActivity.class);
      intent.setClassName(this, "com.example.SecondActivity");
      intent.setClassName(getPackageName(), "com.example.SecondActivity");
      startActivity(intent);
      
      其实setClass/setClassName方法底层调用的还是setComponent方法,只是对setComponent方法进行封装了下。
  • 隐式Intent
    隐式Intent通过设置Action、Data、Category,让系统来筛选出合适的Activity。筛选是根据所有的来筛选。

    
    	
    	
    
    
      Intent intent = new Intent("com.example.second");
      startActivity(intent);
    
      如果应用代码中action的android:name与系统的冲突了,比如都为(即系统为打电话的应用),则启动该intent的时候会有出现一个弹框,包含系统打电话的应用和用户自定义的Activity同时出现,让用户自己去选择启动哪个Activity。
    

  一般在开发过程中,如果是同项目的采用显示Intent;如果创建一个Activity是供外包使用的,则创建隐式Intent

你可能感兴趣的:(android)