It's actually not a large number, Views usually don't have many children.

This implementation has nothing to do with the GC. The goal is to
avoid going through method calls to manipulate the group's children.

On Fri, Apr 3, 2009 at 4:32 AM, Stoyan Damov <[email protected]> wrote:
>
> Using hand-crafted code, you can control how much your backing array
> grows -- I suspect ARRAY_CAPACITY_INCREMENT is quite a big number.
>
> Cheers
>
> On Fri, Apr 3, 2009 at 1:44 PM, [email protected]
> <[email protected]> wrote:
>>
>> I notice in the source code they are not used in critical loops, e.g.
>> in View.java :
>> http://android.git.kernel.org/?p=platform/frameworks/base.git;a=blob;f=core/java/android/view/ViewGroup.java;h=e686d1c20bd21eaa050ff3bf9187b549ee7b1355;hb=HEAD
>>
>> I can see this kind of code which would be much easier implemented as
>> an ArrayList :
>>
>> 1867     private void addInArray(View child, int index) {
>> 1868         View[] children = mChildren;
>> 1869         final int count = mChildrenCount;
>> 1870         final int size = children.length;
>> 1871         if (index == count) {
>> 1872             if (size == count) {
>> 1873                 mChildren = new View[size +
>> ARRAY_CAPACITY_INCREMENT];
>> 1874                 System.arraycopy(children, 0, mChildren, 0,
>> size);
>> 1875                 children = mChildren;
>> 1876             }
>> 1877             children[mChildrenCount++] = child;
>> 1878         } else if (index < count) {
>> 1879             if (size == count) {
>> 1880                 mChildren = new View[size +
>> ARRAY_CAPACITY_INCREMENT];
>> 1881                 System.arraycopy(children, 0, mChildren, 0,
>> index);
>> 1882                 System.arraycopy(children, index, mChildren,
>> index + 1, count - index);
>> 1883                 children = mChildren;
>> 1884             } else {
>> 1885                 System.arraycopy(children, index, children, index
>> + 1, count - index);
>> 1886             }
>> 1887             children[index] = child;
>> 1888             mChildrenCount++;
>> 1889         } else {
>> 1890             throw new IndexOutOfBoundsException("index=" + index
>> + " count=" + count);
>> 1891         }
>> 1892     }
>> >
>>
>
> >
>



-- 
Romain Guy
Android framework engineer
[email protected]

Note: please don't send private questions to me, as I don't have time
to provide private support.  All such questions should be posted on
public forums, where I and others can see and answer them

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to