Just to be sure I understand correctly "launched" and "stopped" in that sentence: The function passed to declareService will be called when the gadget is added to the DOM. This function must return a (patched for cancellation support)RSVP.Promise and this promise will be cancelled when the gadget is removed from DOM. Is it ?
Explaining that jobs are supposed to be called by parent gadgets and that calling a job will cancel the current running job if it was already running.
No, only method local to the gadget should call a job. This method can then be made available to parent or child gadgets depending on the needs