Android Kaki

Build beautiful, usable products using required Components for Android.

DisposableEffect: Jetpack Compose Facet Results API | by Saqib | Might 2023



Go deep into DisposableEffect Unwanted effects API and its similarities/variations with LaunchedEffect And keep in mind(key){} APIs.

The story will discover the uncomfortable side effects API intimately DisposableEffect and there will probably be a use case for displaying the applying of DisposableEffect, the place we’ll see the way to log analytics occasions whereas observing lifecycle occasions.

What are uncomfortable side effects?

A facet impact is something that occurs exterior the scope of a composable work that may ultimately have a composable impact. Jetpack Compose supplies completely different uncomfortable side effects APIs to deal with these uncomfortable side effects in a managed and predictable method.

I wrote an in depth story about LaunchedEffect And rememberCoroutineScope Facet Results API, if you may learn from under hyperlink.

Check out the web page content material overview.

Web page Contents

  • DisposableEffect API
  • DisposableEffect API UnderTheHood
  • DisposableEffect code instance
  • DisposableEffect evaluate to keep in mind(key)
  • DisposableEffect evaluate to LaunchedEffectAPI
  • DisposableEffect Purposes (use case: Logging analytics when the display is seen to the person)
  • Github undertaking

Disposable Results API

DisposableEffect is a composable perform, which suggests it could actually solely be used inside one other composable perform. DisposableEffect get a key and block of code to execute when that key adjustments and when it enters the Element part. DisposableEffect present onDispose code block used to clear any observers if we’re listening to these callbacks in impact block DisposableEffect . It ensures that onDispose block is offered in any other case it is going to give an error.

UnderTheHood Disposable API

Check out certainly one of ‘s perform declarations DisposableEffect .

Wanting on the above code confirms the next factors.

  • DisposableEffect is a composable perform.
  • impact block is just not a droop perform so if now we have to implement a droop perform then DisposableEffect is just not a alternative.
  • DisposableEffect is anticipating a minimum of one key, If we do not need to go any key we are able to go null or Unit I like to recommend you goUnit to make the code simpler to learn or you should use DisposableEffect(true).
  • DisposableEffect utilizing rememberKey(key) Inside API to execute a block of code when the important thing adjustments. We are going to see the distinction btw each under.
  • DisposableEffect utilizing DisposableEffectScope give impact block. DisposableEffectScope make it possible for onDispose block is offered and it ensures the block is offered in onDispose is executed when the important thing adjustments or when DisposableEffect go away the element, to wash up sources.

DisposableEffect API code instance

Let’s have a look at a code instance to confirm the traits of DisposableEffect .

Within the code about DisposableEffect used with the . key rely.worth . We print logs when impact execution block and when onDispose execution block. Within the ViewModel it begins with a rely of 1 and increments the rely each second till as much as 3.

After operating the code, the log appears to be like like this.

The diary reveals that impact block executes on each main change and onDispose execute block earlier than execution impact block with new key change. onDispose for quantity 3 has not been referred to as as a result of the secret’s not modified additional.

At this level if we rotate the gadget then onDispose block rely 3 will probably be referred to as first earlier than execution impact execution block from rely 1 onwards.

Configuration change restarts Composition Part

So the log after rotating the gadget will appear to be under.

DisposableEffect vs reminiscence(key)

keep in mind there are purposes that calculate and maintain their very own State data, but when we use keep in mind with key And block of code {} alike keep in mind(key) {} then it really works like DisposableEffect besides that DisposableEffect present onDispose block for cleanup. So if we need not clear up sources or we do not observe any adjustments that should be cleaned up then keep in mind(key) {} can be utilized for easy instances.

To summarize the factors.

  • keep in mind(key){} executes the code block for the primary time within the Element part and in addition when the secret’s delivered keep in mind change.
  • keep in mind(key) {} works just like DisposableEffect(key) {} besides that DisposableEffect present onDispose to wash up.
  • keep in mind(key) {} can be utilized interchangeably with DisposableEffect(key) {} if we do not have to wash something up when the secret’s modified or when the combo leaves the element.
  • DisposableEffect use keep in mind(key) {} underneath the hood. (you may see it within the UnderTheHood part above)

DisposableEffect vs LaunchedEffect

Typically it is good to match one API with others and this helps to grasp and determine when/the place we should always use which API. So let’s examine the similarities and variations between DisposableEffect And LaunchedEffect.


  • LaunchedEffect And DisposableEffect are composable capabilities and may solely be used inside one other composable perform.
  • LaunchedEffect And DisposableEffect each take key/keys to execute blocks of code when handed key/keys change and within the composition part.
  • LaunchedEffect canceled with the beforehand operating coroutine earlier than beginning a brand new one whereas DisposableEffect name onDispose for the beforehand operating code block to wash up sources earlier than executing the brand new code block.


  • LaunchedEffect carry out droop perform whereas DisposableEffect used for non-hanging capabilities.
  • DisposableEffect present onDispose block the place we are able to clear up sources whereas LaunchedEffect would not present any such factor however it runs the coroutine within the composable scope so its lifecycle is managed mechanically.
  • LaunchedEffect ought to solely be used to carry out person interface associated duties whereas DisposableEffect primarily used to carry out different duties that aren’t particular to the person interface, for instance logging of analytics occasions

DisposableEffect utility (use case: seize analytics occasions when the display is seen)

Let us take a look at the precise use case the place DisposableEffect is a perfect alternative.

use case

We need to log analytics occasions as quickly because the person views the display.

To realize that we wish observe lifecycle occasions, utilizing which we detect when the display is open, test lifecycle standing, and log analytics occasions as applicable.

We’ll observe lifecycle adjustments by including an observer to these when it enters the Element part, so we additionally take away that observer as quickly because the compositing leaves Ingredient.

DisposableEffect will assist obtain this because it supplies a impact code block to execute on Element and onDispose referred to as when the composable leaves the Element.

Check out the general code under

IN DisposableEffect We’re watching to life-cycle change occasions in the course of the Element. When it is in Resume the state it calls logOnResume viewModel’s technique which can ultimately log the occasion. (we cannot go into element about viewModel performance as it is not needed for this story)

There are a lot of different purposes of DisposableEffect the place it may be helpful, listed below are a number of lists.

  • Observe keyboard opening and shutting occasions
  • Observe lifecycle occasions to carry out reload/refresh/cleanup duties
  • Cease/Begin observing information stream based mostly on lifecycle occasion


Github undertaking

That is it for now! Hope it helps… Any questions/strategies are welcome within the feedback.

Keep in mind to observe and when you prefer it 🙂

GitHub | LinkedIn | Twitter

John Wick: Chapter 4 (FREE) FULLMOVIE The Super Mario Bros Movie avatar 2 Where To Watch Creed 3 Free At Home Knock at the Cabin (2023) FullMovie Where To Watch Ant-Man 3 and the Wasp: Quantumania Cocaine Bear 2023 (FullMovie) Scream 6 Full Movie

Updated: May 19, 2023 — 3:53 pm

Leave a Reply

Your email address will not be published. Required fields are marked * © 2023 Android kaki