Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Handler().postDelayed is now deprecated. What function to call instead? [duplicate]

Tags:

android

kotlin

I use this function to delay the notifyDatasetChanged() function.

Handler().postDelayed({
    notifyDataSetChanged()
}, 100)

Handler().postDelayed is now deprecated. What function to call instead ?

In the documentation, Google says :

This constructor is deprecated. Implicitly choosing a Looper during Handler construction can lead to bugs where operations are silently lost (if the Handler is not expecting new tasks and quits), crashes (if a handler is sometimes created on a thread without a Looper active), or race conditions, where the thread a handler is associated with is not what the author anticipated. Instead, use an Executor or specify the Looper explicitly, using Looper#getMainLooper, {link android.view.View#getHandler}, or similar. If the implicit thread local behavior is required for compatibility, use new Handler(Looper.myLooper(), callback) to make it clear to readers.

But I am a beginner and I don't speak English language well enough, and I can't understand if there is an other option to replace handler().

like image 460
EagleStar Avatar asked Aug 19 '26 18:08

EagleStar


1 Answers

You need to use the constructor with an explicit looper, for the Main thread Looper use Looper.getMainLooper()

Handler(Looper.getMainLooper()).postDelayed({
    notifyDataSetChanged()
}, 100)
like image 67
Zain Avatar answered Aug 21 '26 07:08

Zain