2017-06-16 60 views

回答

11

可以,但不會完全初始化。 Activity上有一系列函數需要按正確的順序調用才能正確初始化它,以及框架爲了顯示活動而採取的一系列步驟。調用startActivity將採取這些步驟並以正確的順序調用Activity生命週期函數。所以沒有理由使用新的。

看着它另一種方式 - 可以說你要做Activity a = new Activity()。操作系統如何知道你做到了這一點,並知道它應該顯示該活動?它如何知道活動現在應該進入前臺?它不會。需要說明的是,啓動了一項新的活動。這就是startAcctivity存在的原因。而且既然你必須調用它,爲什麼不把它作爲一個工廠方法呢,所以初始化和啓動只是一個步驟?

+0

這是一個很好的解釋,當調用活動良好的工作bro有用的信息時發生了什麼。 –

1

不僅可以使用new關鍵字創建活動對象,還可以擴充其佈局/子視圖,然後啓動它。

但是,實現上述事情的方法非常繁瑣且容易出錯。如果您正在處理正常的Android應用程序開發,則不推薦使用它。

如果你在它是如何做好奇,看看這些github上的項目:

https://github.com/singwhatiwanna/dynamic-load-apk

https://github.com/didi/VirtualAPK

https://github.com/DroidPluginTeam/DroidPlugin

這些項目旨在加載和啓動外部活動/服務來自UNINSTALLED apk文件。他們實施這個方法的一個小方面是通過new創建活動。

相關問題