为什么我们必须使用意图启动活动
为什么我们不能使用Activity a = new Activity ??
启动它我尝试在Android开发者中搜索但没有得到任何答案
答案 0 :(得分:11)
你可以,但它不会被完全初始化。在Activity上有一系列函数,需要按正确的顺序调用以正确初始化它,以及框架为显示活动而采取的一系列步骤。调用startActivity将采用这些步骤并以正确的顺序调用Activity生命周期函数。所以没有理由使用新的。
以另一种方式看待它 - 让我们说你要做Activity a = new Activity()。操作系统如何知道你这样做,并知道它应该显示那个Activity?怎么知道Activity现在应该进入前台呢?它不会。需要告知的是,新活动已经启动。这就是startAcctivity存在的原因。既然你必须要调用它,为什么不把它作为工厂方法,所以初始化和启动是一步?
答案 1 :(得分:1)
您不仅可以使用new
关键字创建活动对象,还可以对其布局/子视图进行充气,然后再启动它。
但实现上述方法的方法非常繁琐且容易出错。如果您正在处理正常的Android应用程序开发,则不建议使用。
如果您对如何完成它感到好奇,请看看这些github项目:
https://github.com/singwhatiwanna/dynamic-load-apk
https://github.com/didi/VirtualAPK
https://github.com/DroidPluginTeam/DroidPlugin
这些项目旨在从UNINSTALLED apk文件加载和启动外部活动/服务。他们实现此目的的一个微小方面是使用new
创建活动。