The ability management framework is provided by OpenHarmony for you to develop OpenHarmony applications. The following figure shows the architecture of the ability management framework.
Figure 1 Ability management framework
Ability is the minimum unit for the system to schedule applications. It is a component that can implement an independent functionality. An application can contain one or more Ability instances. There are two types of templates that you can use to create an Ability instance: Page and Service.
An AbilitySlice represents a single screen and its control logic. It is specific to Page abilities. A Page ability may contain one ability slice or multiple ability slices that provide highly relevant capabilities. The following figure shows the relationship between a Page ability and its ability slices.
Figure 2 Relationship between a Page ability and its ability slices
Figure 3 Lifecycle state transition of a Page ability
Description of ability lifecycle states:
UNINITIALIZED: The ability is not initialized. This state is a temporary state. An ability changes directly to the INITIAL state upon its creation.
INITIAL: This state refers to the initial or stopped state. The ability in this state is not running. The ability enters the INACTIVE state after it is started.
INACTIVE: The ability is visible but does not gain focus.
ACTIVE: The ability is in the foreground and has focus. The ability changes from the ACTIVE state to the INACTIVE state before returning to the background.
BACKGROUND: The ability returns to the background. After being re-activated, the ability enters the ACTIVE state. After being destroyed, the ability enters the INITIAL state.
AbilityLoader is used to register and load Ability classes. After creating an Ability class, you should first call the registration API defined in AbilityLoader to register the Ability class name with the ability management framework so that this Ability can be instantiated when being started.
AbilityManager enables inter-process communication (IPC) between the AbilityKit and the Ability Manager Service.
EventHandler is provided by the AbilityKit to enable inter-thread communication between abilities.
The Ability Manager Service is a system service used to coordinate the running relationships and lifecycle states of Ability instances. It consists of the following sub-modules:
AppSpawn is a system service used to create the process for running an ability. This service has high permissions. It sets permissions for Ability instances and pre-loads some common modules to accelerate application startup.
/foundation/aafwk/aafwk_lite ├── frameworks │ ├── ability_lite # Core implementation code of AbilityKit │ ├── abilitymgr_lite # Client code used for communication between the AbilityKit and Ability Manager Service │ └── want_lite # Implementation code of the information carrier for interaction between abilities ├── interfaces │ ├── kits │ │ ├── ability_lite # AbilityKit APIs exposed externally │ │ └── want_lite # External APIs of the information carrier for interaction between abilities │ └── innerkits │ └── abilitymgr_lite # Internal APIs provided by the Ability Manager Service for other subsystems └── services └── abilitymgr_lite # Implementation code of the Ability Manager Service
The Ability Manager Service is running in the foundation process.
The Ability Manager Service is registered with sa_manager. sa_manager runs in the foundation process and sets up a thread runtime environment for the service. For details about how to create and use the Ability Manager Service, see SA Framework.
The Ability Manager Service starts upon OS startup.
After the HAP installation is complete, you can use the aa tool to run the demo for starting the specified ability through the following command. (Taking hispark_taurus as an example, you can obtain the aa tool from the out/hispark_taurus/ipcamera_hispark_taurus/dev_tools/bin directory after the version building.)
./bin/aa start -p com.xxxxxx.hiability -n MainAbility
：Code submit frequency
：React/respond to issue & PR etc.
：Well-balanced team members and collaboration
：Recent popularity of project
：Star counts, download counts etc.