如何修复此代码中的弃用警告?或者,还有其他的选择吗?
Handler().postDelayed({
context?.let {
//code
}
}, 3000)
如何修复此代码中的弃用警告?或者,还有其他的选择吗?
Handler().postDelayed({
context?.let {
//code
}
}, 3000)
当前回答
对于Xamarin Android,而不是
Handler handler;
handler = new Handler();
只写
Handler handler;
handler = new Handler(Looper.MyLooper());
其余的代码都很好。
其他回答
使用生命周期范围会更容易。内部活动或片段。
lifecycleScope.launch {
delay(2000)
// Do your stuff
}
或者使用处理器
Handler(Looper.myLooper()!!)
如果你使用变量作为处理程序和可运行的,然后像这样使用它。
private Handler handler;
private Runnable runnable;
handler = new Handler(Looper.getMainLooper());
handler.postDelayed(runnable = () -> {
// Do delayed stuff here
handler.postDelayed(runnable, 1000);
}, delay);
你还需要删除onDestroy()中的回调
@Override
public void onDestroy() {
super.onDestroy();
if (handler != null) {
handler.removeCallbacks(runnable);
}
}
使用这个
Looper.myLooper()?.let {
Handler(it).postDelayed({
//Your Code
},2500)
}
协程 Kotlin
private val SPLASH_SCREEN_TIME_OUT_CONST: Long = 3000
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_splash)
window.setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN
)
GlobalScope.launch {
delay(SPLASH_SCREEN_TIME_OUT_CONST)
goToIntro()
}
}
private fun goToIntro(){
startActivity(Intent(this, IntroActivity::class.java))
finish()
}
Handler()和Handler(Handler.)回调回调)构造函数已弃用。因为这可能会导致bug和崩溃。显式使用Executor或Looper。
对于Java
Handler handler = new Handler(Looper.getMainLooper());
handler.postDelayed(new Runnable() {
@Override
public void run() {
//do your work here
}
}, 1000);