运行此命令时,首先显示Toast 1,然后显示Toast 2:
@Override
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
setContentView(R.layout.activity_main);
Handler handler = new Handler();
handler.post(new Runnable() {
@Override
public void run() {
//Toast 2
Toast.makeText(MainActivity.this, "Toast_2", Toast.LENGTH_SHORT).show();
}
});
// Toast_1
Toast.makeText(this, "Toast 1", Toast.LENGTH_SHORT).show();
}
我知道Runnable对象被推送到MessageQueue,但是Looper何时在主线程中执行它?为何Toast_1首先出现?
您的方法尚未执行完毕,因此Handler需要等到它发布后,才能发布您的Runnable。
Looper会尽快执行它,但是当您的方法仍在执行时就不会执行。一旦Toast 1运行,onCreate()
就已经完成执行,并且处理程序可以执行该Runnable。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句