为什么我们不能使用new关键字创建活动?

时间:2017-06-16 06:31:53

标签: java android android-activity

为什么我们必须使用意图启动活动

为什么我们不能使用Activity a = new Activity ??

启动它

我尝试在Android开发者中搜索但没有得到任何答案

2 个答案:

答案 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创建活动。