# Android Coroutine Extensions

# Why Coroutine?

> If get to know something new by reading my articles, don't forget to endorse me on [LinkedIn](https://www.linkedin.com/in/rommansabbir/)

A coroutine can provide a very high level of concurrency with very small overhead. Multiple threads can also provide parallelism but there is blocking and context switching. Coroutine suspends the thread and does not block it so that it can switch to another work.

# Kotlin Extension Function?

Basically, Kotlin Extension Function provides a facility to add methods to class without inheriting a class or using any type of design pattern. The created extension functions are used as a regular function inside that class.

# Why This "Android Coroutine Extensions"?

Kotlin's Coroutine Extension functions to fire `CoroutineScope` from `AppCompactActivity/Fragment/ViewModel` which is tied to it's parent `CoroutineScope,` so that If the parent is no loger exists, cancel any ongoing operation under the parent `CoroutineScope`.

Basic Usages:

* Lets assume that when an `Activity` is started & you need to do some operation on the activity start. But user leave the screen and the ongoing Operation should be cancelled automatically.
    
* For `API` request, assume you are calling an `API` from your `ViewModel` with a different `Coroutine Scope` and leave the screen but the operation is still ongoing, because it was not instructed to cancel any ongoing operation when parent is no longer exist.
    

By using those extension functions you don't have to worry about the cancellation of ongoing operations according to the parent's `LifeCycle`.

Let's a look at the available functions.

%[https://gist.github.com/rommansabbir/44acd7f35987846a0cb6ab983f4ff27b] 

Follow Me on LinkedIn:

%[https://www.linkedin.com/in/rommansabbir]
