Handler().postDelayed 现已弃用。调用什么函数呢?

juj*_*uf1 3 android kotlin

我用这个函数来延迟notifyDatasetChanged()函数。

Handler().postDelayed({
    notifyDataSetChanged()
}, 100)
Run Code Online (Sandbox Code Playgroud)

Handler().postDelayed现已弃用。调用什么函数呢?

在文档中,谷歌说:

该构造函数已被弃用。在 Handler 构造期间隐式选择 Looper 可能会导致错误,其中操作会默默丢失(如果 Handler 不期待新任务并退出)、崩溃(如果有时在没有 Looper 活动的线程上创建处理程序)或竞争条件,处理程序所关联的线程不是作者所预期的。相反,使用 Executor 或使用 Looper#getMainLooper、{link android.view.View#getHandler} 或类似方法显式指定 Looper。如果为了兼容性需要隐式线程本地行为,请使用 new Handler(Looper.myLooper(),callback) 来让读者清楚。

但我是初学者,英语说得不够好,我不明白是否有其他选择可以替代handler()

Zai*_*ain 10

您需要使用带有显式 Looper 的构造函数,供主线程 Looper 使用Looper.getMainLooper()

Handler(Looper.getMainLooper()).postDelayed({
    notifyDataSetChanged()
}, 100)
Run Code Online (Sandbox Code Playgroud)