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

2024-04-14

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

附:此外,任何相关文档链接都会非常有用,提前致谢

@覆盖

protected void onCreate(Bundle savingInstanceState) { 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();
}

你的问题是你正在打电话timer.run();代替timer.start();

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使 setContentView() 在线程中正常工作? 的相关文章

随机推荐