Uploaded image for project: 'Titanium SDK/CLI'
  1. Titanium SDK/CLI
  2. TIMOB-13796

Android: Implement new window architecture

    Details

      Description

      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.

      Update on behavior change:

      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.

      <property name="ti.android.useLegacyWindow" type="bool">true</property>

      Update on performance improvement:

      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.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                pwang Ping Wang
                Reporter:
                pwang Ping Wang
                Reviewer:
                Allen Yeung
              • Watchers:
                11 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:

                  Backbone Issue Sync

                  • Backbone Issue Sync is enabled for your project, but we do not have any synchronization info for this issue.

                    Git Source Code