Activity 顯式啓動與隱式啓動 應用

1、Activity 顯式啓動 (代碼示例):ide

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);
            }
        });
     }
}

2、Activity 隱式啓動 (代碼示例):this

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);
            }
        });
    }
}

3、應用場景code

顯式Intent :經過指定Intent組件名稱來實現的,通常用在知道目標組件名稱的前提下,通常是相同的應用程序內部實現的。
隱式Intent:    經過Intent Filter來實現的,它一半用在沒有明確指出目標組件名稱的前提下,通常用於在不一樣的應用程序之間。

總結:對於顯式Intent, Android不須要自阿去作解析,由於目標組件很明確。Android須要解析的是隱式Intent,經過解析,將Intent映射給能夠處理該Intent的Activity,Service等。Intent的解析機制主要是經過查找已經註冊在AndroidManifest.xml中的全部IntentFilter以及其中定義的Intent, 最終找到 Intent.
相關文章
相關標籤/搜索