1# ServiceAbility Lifecycle 2<!--Kit: Ability Kit--> 3<!--Subsystem: Ability--> 4<!--Owner: @xialiangwei--> 5<!--Designer: @jsjzju--> 6<!--Tester: @lixueqing513--> 7<!--Adviser: @huipeizi--> 8 9 10You can implement lifecycle callbacks (as described in the table below) in **service.js** or **service.ets**. 11 12 13**Table 1** ServiceAbility lifecycle callbacks 14 15| API| Description| 16| -------- | -------- | 17| onStart(): void | Called to initialize a ServiceAbility when the ServiceAbility is being created. This callback is invoked only once in the entire lifecycle of a ServiceAbility.| 18| onCommand(want: Want, startId: number): void | Called every time a ServiceAbility is started on the client. You can collect calling statistics and perform initialization operations in this callback.| 19| onConnect(want: Want): rpc.RemoteObject | Called when the ServiceAbility is connected.| 20| onDisconnect(want: Want): void | Called when the connection to the ServiceAbility is disconnected.| 21| onStop(): void | Called when the ServiceAbility is being destroyed. You should override this callback for your ServiceAbility to clear its resources, such as threads and registered listeners.| 22