上篇随笔大概写了了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