提问者:小点点

Handler(). postDelayed现在已弃用。改为调用什么函数?[重复]


我使用这个函数来延迟通知数据更改()函数。

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

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

在留档中,谷歌说:

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

但是我是初学者,英语说得不够好,我不明白是否有其他选项来替换handler()


共2个答案

匿名用户

您需要使用带有显式循环器的构造函数,对于主线程循环器useLooper. getMainLooper()

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

匿名用户

我强烈建议使用静态编程语言协程。在您将库实现到项目中后,这是协程的示例代码:

      GlobalScope.launch {
          delay(2000)
          "Your Code"
      }