Q:

Why are some methods in the Android SDK accept an array as a parameter instead of returning an array? 

So I am working on an android app.  I came across the Color class.  I see that one of its methods is colorToHSV.  Just from the name, I think it would return a float array (HSV).  However, it returns void!  It accepts an array as a parameter!  I assume that it would modify the array passed in.  But why does it have to do this?  Just return an array!  I also see this pattern in readBooleanArray in Parcel. 
Why it declares the method like this?  Is this some kind of pattern? 

A:

But why does it have to do this? 

Usually, this coding pattern is designed to encourage recycling of objects, avoiding new allocations each time. 
This is particularly important in Android, as before Android 5.0, the garbage collector was non-compacting (and even ART's Android 5.0+ garbage collector only collects when the app is in the background).  Creating lots of little objects, even if they get garbage-collected, means that your heap becomes fragmented, inhibiting your ability to make allocations in the future.