显式启动明确指定要启动的activity的class或者包名.activity类名字
方式一:class跳转
Intent intent =new Intent(Activity1.this,Activity2.class);
startActivity(intent);
public class myActivity extends Activity {
Button btnStart;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnStart = (Button) findViewById(R.id.btn_start_second);
btnStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent =new Intent();
intent.setClass(myActivity.this,secondActivity.class);
startActivity(intent);}
});
}
}
方式二:包名,类名字跳转
Intent intent =new Intent();
Intent.setClassName(context,”c1”);
startActivity(intent);
public class myActivity extends Activity {
Button btnStart;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnStart = (Button) findViewById(R.id.btn_start_second);
btnStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//第一种
// Intent intent =new Intent();
// intent.setClass(myActivity.this,secondActivity.class);
// startActivity(intent);
//第二种
Intent intent1 =new Intent();
intent1.setClassName(myActivity.this,"com.example.asong.test.secondActivity");
startActivity(intent1);
}
});
}
}
方式三:ComponentName跳转
Intent intent =new Intent();
intent.setComponent(new Component(context,activity2.class));
startActivity(intent);
Intent intent =new Intent();
ComponentName componentName=new ComponentName(myActivity.this,secondActivity.class);
intent.setComponent(componentName);
startActivity(intent);
隐式启动
设置启动过滤器,通过指定Manifests文件中的action或者action和data属性,系统会查找符合条件的activity,并启动它。
Manifests文件
<activity android:name=".secondActivity">
<intent-filter>
<action android:name="abcd.secondActivity"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
方式一:在构造时就传入actionName
Intent intent =new Intent(“actionName”);
startActivity(intent);
Intent intent =new Intent("abcd.secondActivity");
startActivity(intent);
方式二:构造完成后设置actionName
Intent intent =new Intent();
intent.setAction(“actionName”);
startActivity(intent);
Intent intent =new Intent();
intent.setAction("abcd.secondActivity");
startActivity(intent);
相关面试题
显式启动与隐式启动的区别是什么?
简答:
显式指的是指定了目标组件的intent,隐式指的是通过intentfilter来匹配启动的intent,都是程序发出的请求意图。
本文详细介绍了Android中Activity的显式启动(包括三种方式:class跳转、包名+类名跳转、ComponentName跳转)和隐式启动(通过设置启动过滤器匹配action和data)。同时,还探讨了显式与隐式启动的主要区别,强调显式启动直接指定目标组件,而隐式启动依赖于IntentFilter匹配。
1247

被折叠的 条评论
为什么被折叠?



