为什么睡眠线程停止布局显示?

时间:2011-12-01 17:48:06

标签: android multithreading android-layout android-activity concurrency

为什么这不先画布局,然后再睡觉? 它确实在睡觉后正确显示下一个活动,但在睡觉前没有显示第一个屏幕。这是一个闪屏。

按顺序,它应该: - 设置内容视图(显示启动) - 创建线程。 - 运行线程 - 线程睡眠 - Thread启动新活动。

只是,似乎没有发生这样的事情。非常感谢任何帮助

package nutterzUK.spinDroid.application;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class SpinDroidActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Thread myThread = new Thread(){
            public void run(){
                try {
                    Intent myIntent = new Intent(SpinDroidActivity.this, NextActivity.class);
                    this.sleep(5000);
                    startActivity(myIntent);
                    finish();
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        };

        myThread.run();
    }
}

2 个答案:

答案 0 :(得分:3)

实际上,您并未创建并发情况。您正在UI线程中执行run()方法。

您要做的电话是

myThread.start();

同时启动Thread。

答案 1 :(得分:0)

在onCreate之后和呈现UI之前还会发生其他生命周期管理事务。 setContentView()不是呈现UI的实际调用,它只是“设置”基本Activity类在渲染时将使用的资源。