如何使setContentView()与线程正常工作?

时间:2014-07-18 11:12:41

标签: java android multithreading

我有2个布局和2个活动,每个活动对应一个布局,其中一个是SplashActivity,另一个是MainActivity。我希望应用程序打开splashActivity(splash XML显示徽标),等待5秒并打开主活动,但由于该线程,setContentView无法正常工作。

P.S。此外,任何相关的文档链接都非常有用,提前谢谢

  

@覆盖

     

protected void onCreate(Bundle savedInstanceState){           super.onCreate(savedInstanceState);           的setContentView(R.layout.splash_screen);

    Thread timer = new Thread() {
        public void run() {
            try {
                sleep(5000);
            } catch (InterruptedException ex) {
                ex.printStackTrace();
            }

            try {
                Class mainMenu = Class.forName("com.carmine.project.MenuActivity");
                Intent openMainMenu = new Intent(SplashActivity.this, mainMenu);
                startActivity(openMainMenu);
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
        }
    };

    timer.run();
}

1 个答案:

答案 0 :(得分:3)

您的问题是您拨打timer.run();而不是timer.start();

timer.run();在执行该行的线程的相同上下文中调用run方法(在您的情况下,创建UI线程,等待5s,并阻止所有其他操作)。 timer.start()产生一个新线程