现在 Handler() 已被弃用,我该使用什么?

2022-08-31 05:20:35

如何修复此代码中的弃用警告?或者,还有其他选择可以执行此操作吗?

Handler().postDelayed({
    context?.let {
        //code
    }
}, 3000)

答案 1

仅弃用无参数构造函数,现在最好通过该方法在构造函数中指定 。LooperLooper.getMainLooper()

将其用于 Java

new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
    @Override
    public void run() {
        // Your Code
    }
}, 3000);

将其用于 Kotlin

Handler(Looper.getMainLooper()).postDelayed({
    // Your Code
}, 3000)

答案 2

如果你想避免在Kotlin(或)中进行空检查,如果你正在处理一些与UI相关的东西,你可以使用,就像这样:?!!Looper.getMainLooper()Handler

Handler(Looper.getMainLooper()).postDelayed({
   Toast.makeText(this@MainActivity, "LOOPER", Toast.LENGTH_SHORT).show()
}, 3000)

注意:使用片段时,请代替使用片段。requireContext()this@MainActivity


推荐