@Retention(value=CLASS) public @interface OnPrepare
MountSpec
can define a method annotated with OnPrepare
to run code that is more
heavy and cannot be done during OnMount
or OnBind
. The method is called once
before the layout calculation is performed, and the framework can invoke it either on the UI
thread or on a background thread.
The annotated method has a void return type and will be passed the following arguments when the framework invokes it:
Required:
Optional annotated arguments:
Prop
TreeProp
InjectProp
State
The annotation processor will validate this and other invariants in the API at build time.
OnPrepare-annotated methods can calculate values which are heavy to compute and
pass them as inter-stage props to other methods which are performance critical, such as OnMount
.
For example:
@MountSpec
class ExampleMountSpec {
@OnPrepare
static void onPrepare(
ComponentContext c,
@Prop String colorName,
Output<Integer> color) {
color.set(Color.parseColor(colorName));
}
@OnCreateMountContent
static ColorDrawable onCreateMountContent(
ComponentContext c) {
return new ColorDrawable();
}
@OnMount
static void onMount(
ComponentContext c,
ColorDrawable colorDrawable,
@FromPrepare int color){
colorDrawable.setColor(color);
}
}