In the current architecture, the window has two proxies. One is the wrapper proxy (TiBaseWindowProxy) and the other is the real proxy (TiViewProxy or ActivityWindowProxy). This design leads to many problems, eg. we have two copies of properties in the two proies and we need to keep them sync with each other, we need to take special care of adding / removing children, etc. And this design also affects the performance.
We are going to implement a new architecture for the window. A window is a TiViewProxy. For LW window, this TiViewProxy is associated with the current activity. For HW window, this TiViewProxy is associated with a newly created activity. This new architecture will simplify the current window system, make it more maintainable and improve the performance.
In the new architecture, all the windows are heavyweight. If the developers want the old window behavior which has both lightweight and heavyweight windows, they can enable the property "ti.android.useLegacyWindow" in the tiapp.xml.
Did a similar performance experiment as
TIMOB-13714 using this new window architecture. The result is posted on the wiki page (Table 2). The performance to open one heavyweight window with 100 children views is improved by ~120% compared to the old window implementation.