This will be great to android performance.
Besides these algorithms you mentioned, I think another big issue is
decouple 'view' to component. We always think there will be a 'view'
 correspond with a component/node, and implementations are depend on that
all over the place.  See view-related methods in 'WXComponent', these need
tons of work. And this will be a big change to our core architecture.

But I like this idea after all, this will be huge improvement in most
common scenes.


On Wed, Apr 19, 2017 at 5:46 PM, 申远 <[email protected]> wrote:

> The figure in the previous in case image download error.
>
> 在 2017年4月19日,17:26,申远 <[email protected]> 写道:
>
> As it is known to all that the view hierarchy in android should be reduce
> as much as possible. The deeper the view hierarchy is, the worse the
> android app performance . But the front-end engineer is often unaware of
> the view hierarchy in weex until he/she asked android developer for help.
>
> I'd like to propose a mechanism for solving the above problem.
>
> The main problem of deep view hierarchy is that the implementation of view
> is expensive and costs lost of CPU/Memory. The cost of a view is basically
> linear to the length of view hierarchy. It is also unnecessary to create
> view for some components, like <text> and <image> as they mostly draw
> nothing but the objects Weex framework provides. There is no reason we
> waste limited mobile resource to create view in such scenario.
>
> Suppose the following component structure is given, the view hierarchy
> will be the same to the component hierarchy, where there is at least 10
> views(if there is no children in slider and no wrapper view for slider) and
> the height of the tree is 5.
> <屏幕快照 2017-04-19 16.59.09.png>
> With Flatten mechanism enable, the view hierarchy will looks like below
> with 2 views and the height of view tree is 3. Note, only rounded-rect is
> marked as view, oval will be marked as a custom drawCommand.
> <屏幕快照 2017-04-19 17.08.29.png>
>
> The above solution is faced with following issues.
> 1.  A deterministic algorithm is needed for telling whether a component
> node will be transformed to view or drawCommand.
> 2. "Promote to view" and "Downgrade to drawCommand" mechanisms are needed.
> As one may add a gesture to Div D, in which case it is not a drawCommand
> anymore and should be promoted to view. Also, one may remove gesture from a
> view, in which case it should be downgrade to drawCommand.
> 3. As the flatten mechanism is seamless to front-end developer and may
> contains potential bugs, a "flatten mechanism enabled" flag should be put
> in WxInstance and set to false default. I'd like to think flatten mechanism
> as an experimental performance feature not a default behavior.
> 4. The detail of deterministic algorithm and  "Promote to view" and
> "Downgrade to drawCommand" mechanisms is not clear yet. I just hope the big
> picture is right, there may be flaws in the Flatten view solution as all
> other experimental features are.
>
> I'd like to hear advice from other android/weex developer.
> --
>
>
> Best regards,
>
> York Shen
>
>
>


-- 
sospartan
Phone:13588488290
HangZhou

Reply via email to