一、Activity 显式启动 (代码示例):
public class MyActivity extends Activity {
Button buttonStart;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
buttonStart = (Button) findViewById(R.id.start);
buttonStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//显示启动
Intent intent = new Intent();
intent.setClass(MyActivity.this, SecondActivity.class);
startActivity(intent);
}
});
}
}
二、Activity 隐式启动 (代码示例):
public class MyActivity extends Activity {
Button buttonStart;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
buttonStart = (Button) findViewById(R.id.start);
buttonStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//隐式启动
Intent intent = new Intent();
intent.setAction("asdf.SecondActivity");
startActivity(intent);
}
});
}
}
三、应用场景
显式Intent :通过指定Intent组件名称来实现的,一般用在知道目标组件名称的前提下,一般是相同的应用程序内部实现的。
隐式Intent: 通过Intent Filter来实现的,它一半用在没有明确指出目标组件名称的前提下,一般用于在不同的应用程序之间。
总结:对于显式Intent, Android不需要自阿去做解析,因为目标组件很明确。Android需要解析的是隐式Intent,通过解析,将Intent映射给可以处理该Intent的Activity,Service等。Intent的解析机制主要是通过查找已经注册在AndroidManifest.xml中的所有IntentFilter以及其中定义的Intent, 最终找到 Intent.
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。