Dado que tenemos job1 : Job y job2 : Job y queremos hacer que job2 sea un hijo de job1 (fueron creados por separado y no tienen relación).
¿Cuál es la forma correcta de declarar esa relación? de modo que cuando se job1 el trabajo 1, el trabajo 2 también se job2 ...
job1.attachChild(e1.job2 as ChildJob) pero esta es una API interna. No quiero hacer ningún truco cuando lanzo job2 desde la rutina job1.
Puede usar una función de fábrica Job(parent: Job?) que recibe el trabajo principal como parámetro. Tiene la siguiente definición:
public fun Job(parent: Job? = null): Jobeso significa que el parámetro padre es opcional. Entonces puedes crear tus trabajos así:
var parentJob: Job = Job() var childJob: Job = Job(parentJob) También eche un vistazo a SupervisorJob , que se puede usar para personalizar el comportamiento predeterminado del Job . La función de fábrica SupervisorJob tiene una definición similar:
fun SupervisorJob(parent: Job? = null): JobSimplemente inicie job2 desde dentro del alcance de job1. Job2 heredará el alcance, por lo que si job1 se cancela, también lo hará job2.