Sobes.tech
Middle

Объекти Job дар Android барои чӣ истифода мешавад?

sobes.tech AI

Ҷавоб аз AI

Job дар Kotlin Coroutines истифода мешавад барои идора кардани давраи ҳаёти корутин ва бекор кардани онҳо.

Барномаҳои асосӣ:

  • Идоракунии давраи ҳаёт: имкон медиҳад, ки ҳолати корутинро пайгирӣ кунад (Active, Completing, Completed, Cancelling, Cancelled, New).
  • Бекор кардани корутин: Звон кардани job.cancel() ё job.cancelAndJoin() имкон медиҳад, ки иҷрои корутинро боздорад.
  • Конкурентии сохторӣ: Job унсури ҳиерархияи корутинҳо мебошад. Бекор кардани Job-и падар ба бекор кардани ҳамаи Job-и кӯдакон оварда мерасонад.
  • Интизор шудан барои анҷом: job.join() корутинро маҷбур мекунад, ки интизор шавад, то корутинҳои дигар, ки ин Job-ро намояндагӣ мекунанд, ба анҷом расанд.
  • Ҳал кардани истисноҳо: Истисноҳои беҳалол дар корутинҳои кӯдакии бо Job паҳн мешаванд ба боло дар ҳиерархияи Job ва метавонанд бо истифода аз махсуси коркардкунандагон (масалан, CoroutineExceptionHandler) дастгирӣ шаванд.

Маслиҳат барои истифода барои оғоз ва бекор:

fun startAndCancelCoroutine() {
    // CoroutineScope метавонад аз ViewModel, Activity, Fragment ва ғайра гирифта шавад.
    val scope = CoroutineScope(Dispatchers.IO)

    val job: Job = scope.launch {
        // Ҳисобкунии дароз
        delay(5000)
        println("Корутин ба анҷом расид")
    }

    // Бекор кардани корутин пас аз 2 соат
    scope.launch {
        delay(2000)
        job.cancel()
        println("Корутин бекор шуд")
    }
}