显示Intent
显示Intent时明确Activity的类名的启动。有3种方法:
- Intent(Context packageContext,Class<?> cls) 最常用
1 | Intent intent = new Intent(this,SecondActivity.class); |
Intent的setComponent()方法;
1
2
3
4
5
6
7ComponentName componentName = new ComponentName(this,secondActicity.class );
ComponentName componentName = new ComponentName(this,"com.xx.xx.SecondActivity" );
ComponentName componentName = new ComponentName(getPackageName(),"com.xx.xx.SecondActivity" );
Intent intent = new Intent();
intent.setComponent(componentName);
startActivity(intent);Intent的setClass/setClassName方法;
1 | Intent intent = new Intent(); |
ComponentName构造方法
1 | public ComponentName( String pkg, String cls){ |
setClass/setClassName源码
1 | public Intent setClass( Context packageContext, Class<?> cls){ |
所以setClass/setClassName内部用到的还是ComponentName。
隐式Intent
隐式Intent通过设置Action、Data、Category,让系统来筛选出合适的Activity。根据
1 | <intent-filter> |
1 | Intent intent = new Intent("com.cy.demo"); |
可以通过隐式Intent可以直接调用外部的Activity。
可能会有重复,冲突的时候会有一个弹窗供用户选择。