Intent is used to instruct a module to perform an action. The intent
contains the action name, the arguments for the action parameters, and an
optional handler which explicitly specifies which module is meant to perform the
Modules can declare which actions they handle, and their associated parameters in their module facet. The modular framework will then index the module and treat it as a candidate for any incoming intents which contain the specified action, and don't have an explicit handler set.
When an intent is resolved the framework determines which module instance will handle it.
The framework then connects to the module's
service, and calls
HandleIntent(). The framework will connect to the intent
handler interface each time a new intent is seen for a particular module
instance, and intents can be sent to modules which are already running. Modules
are expected to handle the transition between different intents gracefully.
To illustrate the intended use of intents, consider the following fictional example: a new story has been created with a module displaying a list of restaurants and the module wants to show directions to the currently selected restaurant.
The restaurant module creates an intent with a
with two parameters
end, both of type
and passes it to the modular framework via
At this point, the framework will search for a module which has declared support
com.fuchsia.navigate action. Once such a module is found, it is added
to the story and started. The framework then connects to the started module's
IntentHandler service and provides it with the intent.
At this point, the restaurant list module's selected restaurant changes. It
again creates an intent, with the same action as before but with new location
arguments and calls
The framework now knows there is already a module instance running (in this case
AddModuleToStory uses the
name parameter to identify module instances)o
explicitly specify a which can handle the given action, and connects to its
IntentHandler interface and provides it with the new intent. The navigation
module can then update its UI to display directions to the new restaurant.
If the restaurant module wanted a specific module (e.g.
Fuchsia Maps) to
handle the intent, it would set the
Intent.handler to the component URL for
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2019-10-24.