Android学习笔记Intent二

上篇随笔大概写了了Intent学习的大纲,这篇通过代码理解下Intent的ComponentName属性的使用
ComponentName,中文意思是组件名称,通过Intent的setsetComponent方法可以启动一个Activity或者服务。

实例化一个ComponentName需要两个参数,第一个参数是要启动应用的包名称,这个包名称是指清单文件中列出的应用的包名称:

另外一个参数是要启动的Activity或者Service的类全名:

    Intent intent = new Intent();
    ComponentName componentName = new ComponentName("com.example.demo20200424", "com.example.demo20200424.DetailActivity");
    intent.setComponent(componentName);
    startActivity(intent);

这样我们就启动了Activity了。
那么这种方式和平常习惯用的:

    new IntentActivity(MainActivity.this,DetailActivity.class);
    ...

有什么区别呢?通过打开IntentActivity(MainActivity.this,DetailActivity.class);的源码我发现,原来底层就是一个setComponent(componentName):

所以两者直接是没有区别的。

注意
普通Activity或者Service需要在AndroidManifest.xml设置 exported = true
入口Activity不需要的原因是,默认exported = true

猜你喜欢

转载自www.cnblogs.com/lzpq/p/12793916.html