# ScriptGroup.Builder2

Added in[API level 23](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Deprecated in[API level 31](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Summary:[Ctors](https://developer.android.com/reference/android/renderscript/ScriptGroup.Builder2#pubctors)\|[Methods](https://developer.android.com/reference/android/renderscript/ScriptGroup.Builder2#pubmethods)\|[Inherited Methods](https://developer.android.com/reference/android/renderscript/ScriptGroup.Builder2#inhmethods)  

# ScriptGroup.Builder2

*** ** * ** ***

[Kotlin](https://developer.android.com/reference/kotlin/android/renderscript/ScriptGroup.Builder2 "View this page in Kotlin")\|Java

`
public
static
final

class
ScriptGroup.Builder2
`  
`

extends `[Object](https://developer.android.com/reference/java/lang/Object)`


``


`

|---|-------------------------------------------|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | android.renderscript.ScriptGroup.Builder2 |

<br />

*** ** * ** ***

The builder class for creating script groups

A script group is created using closures (see class[Closure](https://developer.android.com/reference/android/renderscript/ScriptGroup.Closure)). A closure is a function call to a kernel or invocable function. Each function argument or global variable accessed inside the function is bound to 1) a known value, 2) a script group input (see class[Input](https://developer.android.com/reference/android/renderscript/ScriptGroup.Input)), or 3) a future (see class[Future](https://developer.android.com/reference/android/renderscript/ScriptGroup.Future)). A future is the output of a closure, either the return value of the function or a global variable written by that function.

Closures are created using the[addKernel(KernelID, Type, Object)](https://developer.android.com/reference/android/renderscript/ScriptGroup.Builder2#addKernel(android.renderscript.Script.KernelID,%20android.renderscript.Type,%20java.lang.Object[]))or[addInvoke(InvokeID, Object)](https://developer.android.com/reference/android/renderscript/ScriptGroup.Builder2#addInvoke(android.renderscript.Script.InvokeID,%20java.lang.Object[]))methods. When a closure is created, futures from previously created closures can be used as its inputs. External script group inputs can be used as inputs to individual closures as well. An external script group input is created using the[addInput()](https://developer.android.com/reference/android/renderscript/ScriptGroup.Builder2#addInput())method. A script group is created by a call to the[create(String, Future)](https://developer.android.com/reference/android/renderscript/ScriptGroup.Builder2#create(java.lang.String,%20android.renderscript.ScriptGroup.Future[]))method, which accepts an array of futures as the outputs for the script group.

Closures in a script group can be evaluated in any order as long as the following conditions are met: 1) a closure must be evaluated before any other closures that take its futures as inputs; 2) all closures added before an invoke closure must be evaluated before it; and 3) all closures added after an invoke closure must be evaluated after it. As a special case, the order that the closures are added is a legal evaluation order. However, other evaluation orders are possible, including concurrently evaluating independent closures.

## Summary

|                                                                                                                           ### Public constructors                                                                                                                           ||
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---|
| ` `[Builder2](https://developer.android.com/reference/android/renderscript/ScriptGroup.Builder2#Builder2(android.renderscript.RenderScript))`(`[RenderScript](https://developer.android.com/reference/android/renderscript/RenderScript)` rs) ` Returns a Builder object |

|                                                                                                                                                                                                                                                                                                          ### Public methods                                                                                                                                                                                                                                                                                                           ||
|------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ` `[ScriptGroup.Input](https://developer.android.com/reference/android/renderscript/ScriptGroup.Input)     | ` `[addInput](https://developer.android.com/reference/android/renderscript/ScriptGroup.Builder2#addInput())`() ` Adds a script group input                                                                                                                                                                                                                                                                                                                                                                                |
| ` `[ScriptGroup.Closure](https://developer.android.com/reference/android/renderscript/ScriptGroup.Closure) | ` `[addInvoke](https://developer.android.com/reference/android/renderscript/ScriptGroup.Builder2#addInvoke(android.renderscript.Script.InvokeID,%20java.lang.Object[]))`(`[Script.InvokeID](https://developer.android.com/reference/android/renderscript/Script.InvokeID)` invoke, `[Object...](https://developer.android.com/reference/java/lang/Object)` argsAndBindings) ` Adds a closure for an invocable function                                                                                                    |
| ` `[ScriptGroup.Closure](https://developer.android.com/reference/android/renderscript/ScriptGroup.Closure) | ` `[addKernel](https://developer.android.com/reference/android/renderscript/ScriptGroup.Builder2#addKernel(android.renderscript.Script.KernelID,%20android.renderscript.Type,%20java.lang.Object[]))`(`[Script.KernelID](https://developer.android.com/reference/android/renderscript/Script.KernelID)` k, `[Type](https://developer.android.com/reference/android/renderscript/Type)` returnType, `[Object...](https://developer.android.com/reference/java/lang/Object)` argsAndBindings) ` Adds a closure for a kernel |
| ` `[ScriptGroup](https://developer.android.com/reference/android/renderscript/ScriptGroup)                 | ` `[create](https://developer.android.com/reference/android/renderscript/ScriptGroup.Builder2#create(java.lang.String,%20android.renderscript.ScriptGroup.Future[]))`(`[String](https://developer.android.com/reference/java/lang/String)` name, `[Future...](https://developer.android.com/reference/android/renderscript/ScriptGroup.Future)` outputs) ` Creates a script group                                                                                                                                         |

| ### Inherited methods |
|-----------------------|---|
| From class` `[java.lang.Object](https://developer.android.com/reference/java/lang/Object)` ` |--------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ` `[Object](https://developer.android.com/reference/java/lang/Object)          | ` `[clone](https://developer.android.com/reference/java/lang/Object#clone())`() ` Creates and returns a copy of this object.                                                                                                                                                      | | ` boolean`                                                                     | ` `[equals](https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object))`(`[Object](https://developer.android.com/reference/java/lang/Object)` obj) ` Indicates whether some other object is "equal to" this one.                                           | | ` void`                                                                        | ` `[finalize](https://developer.android.com/reference/java/lang/Object#finalize())`() ` Called by the garbage collector on an object when garbage collection determines that there are no more references to the object.                                                          | | ` final `[Class](https://developer.android.com/reference/java/lang/Class)`<?>` | ` `[getClass](https://developer.android.com/reference/java/lang/Object#getClass())`() ` Returns the runtime class of this`Object`.                                                                                                                                                | | ` int`                                                                         | ` `[hashCode](https://developer.android.com/reference/java/lang/Object#hashCode())`() ` Returns a hash code value for the object.                                                                                                                                                 | | ` final void`                                                                  | ` `[notify](https://developer.android.com/reference/java/lang/Object#notify())`() ` Wakes up a single thread that is waiting on this object's monitor.                                                                                                                            | | ` final void`                                                                  | ` `[notifyAll](https://developer.android.com/reference/java/lang/Object#notifyAll())`() ` Wakes up all threads that are waiting on this object's monitor.                                                                                                                         | | ` `[String](https://developer.android.com/reference/java/lang/String)          | ` `[toString](https://developer.android.com/reference/java/lang/Object#toString())`() ` Returns a string representation of the object.                                                                                                                                            | | ` final void`                                                                  | ` `[wait](https://developer.android.com/reference/java/lang/Object#wait(long,%20int))`(long timeoutMillis, int nanos) ` Causes the current thread to wait until it is awakened, typically by being*notified* or*interrupted*, or until a certain amount of real time has elapsed. | | ` final void`                                                                  | ` `[wait](https://developer.android.com/reference/java/lang/Object#wait(long))`(long timeoutMillis) ` Causes the current thread to wait until it is awakened, typically by being*notified* or*interrupted*, or until a certain amount of real time has elapsed.                   | | ` final void`                                                                  | ` `[wait](https://developer.android.com/reference/java/lang/Object#wait())`() ` Causes the current thread to wait until it is awakened, typically by being*notified* or*interrupted*.                                                                                             | ||

## Public constructors

### Builder2

Added in[API level 23](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public Builder2 (RenderScript rs)
```

Returns a Builder object

<br />

|                      Parameters                       ||
|------|-------------------------------------------------|
| `rs` | `RenderScript`: the RenderScript context <br /> |

## Public methods

### addInput

Added in[API level 23](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public ScriptGroup.Input addInput ()
```

Adds a script group input

<br />

|                                                                                                         Returns                                                                                                          ||
|-----------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------|
| [ScriptGroup.Input](https://developer.android.com/reference/android/renderscript/ScriptGroup.Input) | a script group input, which can be used as an argument or a value to a global variable for creating closures <br /> |

### addInvoke

Added in[API level 23](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public ScriptGroup.Closure addInvoke (Script.InvokeID invoke, 
                Object... argsAndBindings)
```

Adds a closure for an invocable function

<br />

|                                       Parameters                                        ||
|-------------------|----------------------------------------------------------------------|
| `invoke`          | `Script.InvokeID`: Invoke ID for the invocable function <br />       |
| `argsAndBindings` | `Object`: arguments followed by bindings for global variables <br /> |

|                                                          Returns                                                          ||
|---------------------------------------------------------------------------------------------------------|------------------|
| [ScriptGroup.Closure](https://developer.android.com/reference/android/renderscript/ScriptGroup.Closure) | a closure <br /> |

### addKernel

Added in[API level 23](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public ScriptGroup.Closure addKernel (Script.KernelID k, 
                Type returnType, 
                Object... argsAndBindings)
```

Adds a closure for a kernel

<br />

|                                       Parameters                                        ||
|-------------------|----------------------------------------------------------------------|
| `k`               | `Script.KernelID`: Kernel ID for the kernel function <br />          |
| `returnType`      | `Type` <br />                                                        |
| `argsAndBindings` | `Object`: arguments followed by bindings for global variables <br /> |

|                                                          Returns                                                          ||
|---------------------------------------------------------------------------------------------------------|------------------|
| [ScriptGroup.Closure](https://developer.android.com/reference/android/renderscript/ScriptGroup.Closure) | a closure <br /> |

### create

Added in[API level 23](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public ScriptGroup create (String name, 
                Future... outputs)
```

Creates a script group

<br />

|                                                                                                                        Parameters                                                                                                                        ||
|-----------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `name`    | `String`: name for the script group. Legal names can only contain letters, digits, '-', or '_'. The name can be no longer than 100 characters. Try to use unique names, to avoid name conflicts and reduce the cost of group creation. <br /> |
| `outputs` | `Future`: futures intended as outputs of the script group <br />                                                                                                                                                                              |

|                                                    Returns                                                     ||
|-----------------------------------------------------------------------------------------|-----------------------|
| [ScriptGroup](https://developer.android.com/reference/android/renderscript/ScriptGroup) | a script group <br /> |