【问题标题】:How to make setContentView() work properly with a thread?如何使 setContentView() 与线程一起正常工作?
【发布时间】:2014-09-09 12:21:03
【问题描述】:

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

附:此外,任何相关的文档链接都会非常有用,在此先感谢

@Override

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();
}

【问题讨论】:

    标签: java android multithreading


    【解决方案1】:

    你的问题是你打电话给timer.run(); 而不是timer.start();

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-09
      • 2021-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多