我知道handler是将一个消息(我这里是runable)放入UI activity的队列中,消息被排队进行处理。那么在下面的程序中,runable是队列中唯一的消息,因此直接被处理,也就是程序运行时,执行休眠10000ms后,屏幕上才会显示activity中的控件,事实也确实如此。可我认为输出"hello~"应该和控件的显示是同一时间,也就是10000ms后。可为什么结果却是程序一运行就直接输出了"hello~",而activity的控件却是10000ms后显示的呢?
public class Handle_01Activity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
firstHandler.post(runnable); setContentView(R.layout.main);
System.out.println("hello~");
}
Handler firstHandler = new Handler();
Runnable runnable = new Runnable()
{
@Override
public void run()
{
try
{
Thread.sleep(10000);
} catch (Exception e)
{}
}
};
}
public class Handle_01Activity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
firstHandler.post(runnable); setContentView(R.layout.main);
System.out.println("hello~");
}
Handler firstHandler = new Handler();
Runnable runnable = new Runnable()
{
@Override
public void run()
{
try
{
Thread.sleep(10000);
} catch (Exception e)
{}
}
};
}
static {
task.start();
}
Handler firstHandler = new Handler(task.getLooper());
Runnable runnable = new Runnable() {
@Override
public void run() {
try {
Thread.sleep(10000);
Log.i("jesus", Thread.currentThread().getName());
} catch (Exception e) {
}
}
};
对,handler是依赖于UI的,我疑惑的就是既然依赖于UI,那就应该按照顺序,先休眠10000ms,再出Activity界面,再输出“Hello~”,这样子排着队进行的,为什么结果却先输出“Hello~”,再执行别的呢?
一个类的运行,JVM做会以下几件事情 1、类装载 2、链接 3、初始化 4、实例化;而初始化阶段做的事情是初始化静态变量和执行静态方法等的工作
你是说System.out.println()是静态方法么?