我知道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)
{}
}
};
}
解决方案 »
- 新手学习android开发,求开发环境搭建要求!
- 封装浏览器,隐藏工具栏后无法下载附件
- 请问为什么我的程序不能返回最后退出的界面?
- 请教 android EditText的一个小问题.
- APK混淆代码发生的错误,求指教,错误信息已贴出
- 安卓/linux中怎样调用原有的JNI so库函数
- 请教有没有必要继续学习
- 安卓真机调试,程序没有进入到Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeInit入口函数里?
- 为何模拟器可以接收短信广播,真机却不行?
- 子fragment调用MainActivity中
- android 在线播放有图像但声音很杂 很急,
- android 交互
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()是静态方法么?